理论教育 ARM嵌入式系统应用:使用I2C接口操作24C02的示例

ARM嵌入式系统应用:使用I2C接口操作24C02的示例

时间:2023-11-03 理论教育 版权反馈
【摘要】:使用I2C接口之前,首先要对引脚进行配置。当系统作为从机时,从机地址寄存器I2CxADR有效,当总线对此地址进行访问时,将会产生I2C中断。本例用到了以中断方式操作的硬件I2C软件包,包括2个文件,I2CINT.c和I2CINT.h,为减少篇幅起见,这里仅列出主程序文件。图4-11 利用I2C接口读/写24C02的Proteus仿真电路主程序文件main.c如下:

ARM嵌入式系统应用:使用I2C接口操作24C02的示例

使用I2C接口之前,首先要对引脚进行配置。进行如下设置可将P0.2、P0.2选择I2C0功能:

978-7-111-44508-1-Chapter04-56.jpg

进行如下设置可将P0.11、P0.14选择I2C1功能:

978-7-111-44508-1-Chapter04-57.jpg

I2C时钟由SCL占空比寄存器I2CxSCLH和I2CxSCLL控制,分别用于设置SCL的高电平和低电平时间,以便获得合适的总线时钟速率;寄存器I2CxCONSET用来控制I2C总线的模式及总线操作,其中位SI为I2C中断标志,所有总线操作都要依赖于这一标志,同时它又钳住总线,使总线的数据发送/接收得以同步控制;寄存器I2CxCONCLR则为对应的清零寄存器;I2CxSTAT为I2C状态寄存器,用于指示总线处于哪种状态,以方便控制操作;I2CxDAT为I2C总线数据寄存器,它包含要发送的数据或刚收到的数据。当系统作为从机时,从机地址寄存器I2CxADR有效,当总线对此地址进行访问时,将会产生I2C中断。

I2C主机基本操作方法如下:

●设置I2C引脚连接。

●设置I2C时钟速率(I2CxSCLH、I2CxSCLL)。

●设置为主机,并发送起始信号(I2CxCONSET的I2EN、STA位为1,AA位为0)。

●发送从机地址(I2CxDAT),控制I2CxCONSET发送。

●判断总线状态(I2CxSTAT),进行数据传输控制。

●发送结束信号(I2CxCONSET)。

I2C从机基本操作方法如下:

●设置I2C引脚连接。

●设置自身的从机地址(I2CxADR)。(www.daowen.com)

●使能I2C(I2CxCONSET的I2EN、AA位为1)。

●判断SI位或者等待I2C中断,等待主机操作。

●判断总线状态I2CxSTAT,进行数据传输控制。

初始化I2C0为主模式:

978-7-111-44508-1-Chapter04-58.jpg

初始化I2C1为从模式:

978-7-111-44508-1-Chapter04-59.jpg

例4-6 利用LPC2138的硬件,I2C接口对串行EEPROM器件24C02进行读/写。Proteus仿真电路如图4-11所示。程序运行后,如果对EEPROM器件24C02读/写正确,LED4将被点亮,否则LED1将不断闪烁。本例用到了以中断方式操作的硬件I2C软件包,包括2个文件,I2CINT.c和I2CINT.h,为减少篇幅起见,这里仅列出主程序文件。

978-7-111-44508-1-Chapter04-60.jpg

图4-11 利用I2C接口读/写24C02的Proteus仿真电路

主程序文件main.c如下:

978-7-111-44508-1-Chapter04-61.jpg

978-7-111-44508-1-Chapter04-62.jpg

978-7-111-44508-1-Chapter04-63.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈