CW32L083 I2C主板发送编程示例

描述

主机发送示例

  1. 按GPIO章节引脚数字复用功能的相关描述,将SCL、SDA映射到需要的引脚,并配置SCL、SDA引脚为开漏输出模式;
  2. 设置SYSCTRL_APBEN1.I2Cx为1,使能I2Cx模块的时钟;
  3. 向SYSCTRL_APBRST1.I2Cx依次写入0、1,复位I2Cx模块;
  4. 配置I2Cx_BRR,使SCL的时钟速率符合应用需求;
  5. 设置I2Cx_BRREN为1,使能SCL时钟发生器;
  6. 设置I2Cx_CR.EN为1,使能I2C模块;
  7. 设置I2Cx_CR.STA为1,总线尝试发送START信号;
  8. 等待I2Cx_CR.SI变为1,START信号已发送到总线上;
  9. 查询I2Cx_STAT,如果该寄存器值为0x08或0x10,继续执行下一步骤,否则进行出错误处理。
  10. 向I2Cx_DR中写入SLA+W,设置I2Cx_CR.STA为0,设置I2Cx_CR.SI为0,发送SLA+W;
  11. 等待I2Cx_CR.SI变为1,SLA+W已经发送到总线上;
  12. 查询I2Cx_STAT,如果该寄存器值为0x18,继续执行下一步聚,否则进行出错处理;
  13. 向I2Cx_DR写入等发送的数据,设置I2Cx_CR.SI为0,发送数据;
  14. 等待I2Cx_CR.SI变为1,数据已发送到总线上;
  15. 查询I2Cx_STAT,如果该寄存器为0x28,继续执行下一步骤,否则进行出错处理;
  16. 如待发送的数据未完成,则跳转到步骤13继续执行;
  17. 设置I2Cx_CR.STO为1,设置I2Cx_CR.SI为0,发送STOP停止信号,结束本次传输。

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分