在线时间1080 小时
UID299704
注册时间2011-6-18
NXP金币2022
TA的每日心情 | 开心 2025-8-8 16:43 |
---|
签到天数: 1504 天 连续签到: 1 天 [LV.Master]伴坛终老
版主
  
- 积分
- 10093
- 最后登录
- 2025-8-8
|
本帖最后由 jobszheng5 于 2019-2-28 13:18 编辑
[LPC1768]I2C驱动架构 I2C接口的专利现在属于NXP公司,ST芯片的I2C接口据说为了规避专利所以采用了一些技术手段,最终导致其I2C接口的稳定性大大折扣。现在我们使用自家的I2C接口定是会感觉极好的!
I2C硬件驱动的实现仍然需要采用状态机的设计模式,我们将使用中断处理的方式来操作I2C接口,因此其状态流转图如下图所示:
具体的实现流程与操作寄存器,我们这里参考以下示例:
参考终究是参考,我们还是要有自己的设计模式,这里本人采用Linux的编程设计风格来处理。声明以下接口:
- /**
- * @brief open I2C interface, init slaveAddr and get the I2C bus
- * @param
- * @retval 0=success; -1=I2C bus busy;
- * @date 2019-02-28 13:00
- * @note blocking mode and timeout
- */
- int8_t openI2C(tI2cMasterClass *dev);
- int8_t closeI2C(tI2cMasterClass *dev);
- /**
- * @brief write buf[] to I2C interface
- * @param
- * @retval
- * @date 2019-02-28 13:04
- * @note blocking mode and timeout
- */
- int8_t writeI2C(tI2cMasterClass *dev, uint8_t *wBufPtr, uint16_t wLen);
- int8_t readWriteI2c(tI2cMasterClass *dev, uint8_t *rdBufPtr, uint16_t rdLen, uint8_t wBufPtr, uint16_t wLen);
- int8_t readI2c(tI2cMasterClass *dev, uint8_t *rdBufPtr, uint16_t rdLen);
复制代码
在完成底层硬件驱动后,我们就开始为器件编写针对我们开发套件的读写驱动了。我们会为每一个器件而分立的编写一个实验去验证与说明。
TO BE CONTINUED.
|
|