一般执行步骤如下:
(1)I2CMasterInitExpClk()
首先调用I2CMasterInitExpClk()来初始化I2C主机模块,设置总线速度和使能主机模块。
(2)I2CMasterSlaveAddrSet()
采用I2CMasterSlaveAddrSet()函数设置从机地址,用于定义传输是一次发送(从主机写数据到从机)还是一次接收(从主机读取从机的数据)。
(3)I2CMasterBusBusy()
如果连接到一个含有多个主机的I2C总线上,TivaI2C主机必须在尝试启动传输前,先行调用I2CMasterBusBusy()来确定是否处于忙状态。
(4)I2CMasterDataPut()
在确定总线处于非忙碌状态之后,可调用I2CMasterDataPut()函数来发送数据。
(5)I2CMasterControl
在完成以上步骤后,可调用I2CMasterControl()函数的以下任一命令来启动总线上的数据传输:
①I2C_MASTER_CMD_SINGLE_SEND。(www.xing528.com)
②I2C_MASTER_CMD_SINGLE_RECEIVE。
③I2C_MASTER_CMD_BURST_SEND_START。
④I2C_MASTER_CMD_BURST_RECEIVE_START。
这些命令将会引起总线的主机仲裁、驱动起始序列、发送从机地址与方向位。然后,其余的传输用轮询或中断的方式进行。
(6)I2CMasterErr()
对于一次发送和接收的情况,轮询方式包括从I2CMasterBusy()返回的循环。一旦这个函数指示I2C主机不再处于忙碌状态,则说明总线传输已经完成,此时可用I2CMasterErr()来检查错误,以确定数据是否发送完成或已准备好。
(7)I2CMasterDataGet()
如果没有错误,则说明数据发送完成或已经准备好,这时可用I2CMasterDataGet()函数来读取数据。
另外,对于突发数据发送和接收的情况,每发送与接收完一个字节,或发送或接收完最后一个字节,轮询方式都会调用I2CMasterControl()函数。如果在突发传输中检测到错误,则可使用停止命令来调用I2CMasterControl()函数。
对于中断传输,则需注册一个I2C器件的中断处理程序并使能I2C主机中断,使之在主机不再忙碌时产生中断。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。