您的位置 首页 基础

Cortex-M3 (NXP LPC1788)之IIC控制器

I2C通信协议在上篇文章中进行了介绍,下面对LPC1788的I2C控制器进行分析。要使用I2C模块,需要配置相应的寄存器,如功率、时钟、管…

I2C通信协议在上篇文章中进行了介绍,下面临LPC1788的I2C操控器进行剖析。要运用I2C模块,需求装备相应的寄存器,如功率、时钟、管脚等。以I2C0为例,装备P0.27和P0.28管脚分别为SDA和SCL功用,在PCONP中使能I2C0功率操控,依据PCLK和要运用的I2C的频率设置SCLH和SCLL。

I2C模块能够作业在主发送、主接纳、从发送、从接纳四种作业形式。开发板上LPC1788作业在主发送形式时发送数据给总线上的外设。作业在主接纳形式时接纳总线上的外设数据。

主发送形式的数据格式

操作流程如下:

1,发送一个S开端条件。初始化操控位寄存器,铲除STA、STO、SI,然后向I2C操控置位寄存器I2CONSET中置位STA位,一旦总线闲暇,I2C逻辑会立刻测验I2C总线并发生一开端条件。假如开端条件得到总线应对,中止标志SI会置位,通读取I2C状况寄存器I2STAT的值,假如为0x08一共能够进入发送数据的操作。

2,第一个发送的字节包括接纳设备的从机地址和数据方向位。方向位(R/W)设置成0,一共进行些操作,将该字节写入I2C数据寄存器I2CDAT进行发送。发送成功后会发生一个应对,而且SI再次置位,读取I2STAT中的状况,假如是0x18一共得到正确的应对,能够进行数据的传输。写入从机地址后,应该清零开端条件中置位的STA位,而且SI位有必要在串行传输持续之前复位。

3,最终进行数据的发送,每个数据发送完结都会有一个应对,且SI置位,假如发送成功读取的STAT的值为0x28。要留意的是鄙人一次串行传输前有必要复位SI。

4,数据发送完结后,发送一个P中止条件。在I2CONSET中置位STO标志,而且铲除STA和SI标志。

至此,主发送形式完毕。

主接纳形式数据格式

操作流程如下:

1,发送一个开端条件S。和主发送形式相同。

2,写第一个字节数据,操作过程和主发送相同,只需将方向位改成读,而且正确的应对标志为0x40。

3,数据接纳时需求留意的是,接纳的最终一个字节总对错应对,这样主机就能够告知从机读序列现已完结。假如接纳到的应对A,则I2CSTAT的值为0x50。接纳到非答,则I2CSTAT的值为0x58,。应对或许非应对,经过设置SI位进行操控。

4,在接纳到非应对的状况标志0x58后,发送一个中止条件。

咱们能够独自设置主发送和主接纳,也能够再主接纳或主发送数据传输完毕后,挑选不发送中止条件P,而是发送重复开端条件,进行主发送和主接纳的切换。

主发送切换到主接纳的数据格式

操作流程如下:

1,在主发送形式数据传输完结后,不发送中止条件。即上面介绍的主发送形式流程的第4步不碑文,而是改成从头发送一个开端标志,置位STA。重复开端发送成功后回来 的状况标志位0x10。

2,切换成功后即可按主接纳过程中的第二步直接开端碑文。

LPC1788的主作业形式介绍完,详细的程序鄙人一篇文章再结合从设备给出代码。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/jichu/265741.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部