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的主作业形式介绍完,详细的程序鄙人一篇文章再结合从设备给出代码。