主题中讨论的其它部件:TM4C1231E6PM
我被指示开发I2C代码,该代码遵循当前模型,但位于不同供应商的MCU上。 调度程序仍在运行到完成 ,因此I2C是通过使用中断和DMA的状态机来处理的。 我可以使用I2C FIFO方案而不是DMA。 我真的很喜欢一个I2C示例,它可以正确地使用中断,也可以使用FIFO。
谢谢!
John
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我被指示开发I2C代码,该代码遵循当前模型,但位于不同供应商的MCU上。 调度程序仍在运行到完成 ,因此I2C是通过使用中断和DMA的状态机来处理的。 我可以使用I2C FIFO方案而不是DMA。 我真的很喜欢一个I2C示例,它可以正确地使用中断,也可以使用FIFO。
谢谢!
John
您好,John:
通常我会自愿为您举一个这样的例子,但不幸的是,我在近期内没有足够的带宽来将这些例子放在一起。
对于I2C主中断-您可以了解我们的一些SensorLib实现。 它们使用 sensorlib文件夹中i2cm_drv.c中的I2CMIntHandler。 我认为他们不使用FIFO,但FIFO很容易工作。
配置是使用 I2CTxFIFO配置集完成的,您可以将它设置为主设备并调整触发电平。
I2CMasterControl有许多用于FIFO发送/接收的命令:
//! - \b I2C_MASTER_CMD_FIFO_SINGLE_SEND //! - \b I2C_MASTER_CMD_FIFO_SINGLE_RECEIVE //! - \b I2C_MASTER_CMD_FIFO_BURST_SEND_START //! - \b I2C_MASTER_CMD_FIFO_BURST_SEND_CONT //! - \b I2C_MASTER_CMD_FIFO_BURST_SEND_FINISH //! - \b I2C_MASTER_CMD_FIFO_BURST_SEND_ERROR_STOP //! - \b I2C_MASTER_CMD_FIFO_BURST_RECEIVE_START //! - \b I2C_MASTER_CMD_FIFO_BURST_RECEIVE_CONT //! - \b I2C_MASTER_CMD_FIFO_BURST_RECEIVE_FINISH //! - \b I2C_MASTER_CMD_FIFO_BURST_RECEIVE_ERROR_STOP
然后,您将拥有专用的FIFO I2C发送和获取API (也有非阻塞版本)
然后,如果需要刷新FIFO以确保清除所有数据,则会出现 I2CTxFIFO刷新
最后是I2CFIFOStatus,它 在FIFO的位字段上提供标志。
如果需要,也有Tx功能的Rx版本。
希望这至少从FIFO的角度对您有所帮助。
此致,
Ralph Jacobi
感谢Ralph的努力。
我刚刚意识到,该系列中的某些设备似乎具有一些DMA功能。 我没有在 I2C部分简介中看到DMA,也没有看到名称中有DMA的任何函数,但我推断,某些配置参数中有一些DMA功能。 接收端具有/不具有FIFO的DMA适合我,因为这是以前从TI LSM6DSR收集数据的方式。
也许我可以在互联网上找到一个I2C FIFO / DMA的例子(我们知道一切都是真实的)。
John