登录
CW32L083 I2C主板发送编程示例
华仔的编程随笔
2023-06-09
180451
加入交流群
华仔的编程随笔
81 文章
1226.5w阅读
75粉丝
+关注
描述
主机发送示例
按GPIO章节引脚数字复用功能的相关描述,将SCL、SDA映射到需要的引脚,并配置SCL、SDA引脚为开漏输出模式;
设置SYSCTRL_APBEN1.I2Cx为1,使能I2Cx模块的时钟;
向SYSCTRL_APBRST1.I2Cx依次写入0、1,复位I2Cx模块;
配置I2Cx_BRR,使SCL的时钟速率符合应用需求;
设置I2Cx_BRREN为1,使能SCL时钟发生器;
设置I2Cx_CR.EN为1,使能I2C模块;
设置I2Cx_CR.STA为1,总线尝试发送START信号;
等待I2Cx_CR.SI变为1,START信号已发送到总线上;
查询I2Cx_STAT,如果该寄存器值为0x08或0x10,继续执行下一步骤,否则进行出错误处理。
向I2Cx_DR中写入SLA+W,设置I2Cx_CR.STA为0,设置I2Cx_CR.SI为0,发送SLA+W;
等待I2Cx_CR.SI变为1,SLA+W已经发送到总线上;
查询I2Cx_STAT,如果该寄存器值为0x18,继续执行下一步聚,否则进行出错处理;
向I2Cx_DR写入等发送的数据,设置I2Cx_CR.SI为0,发送数据;
等待I2Cx_CR.SI变为1,数据已发送到总线上;
查询I2Cx_STAT,如果该寄存器为0x28,继续执行下一步骤,否则进行出错处理;
如待发送的数据未完成,则跳转到步骤13继续执行;
设置I2Cx_CR.STO为1,设置I2Cx_CR.SI为0,发送STOP停止信号,结束本次传输。
审核编辑:汤梓红
打开APP阅读更多精彩内容
点击阅读全文
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
热点推荐
主板
编程
I2C
GPIO
请问
CW32L083
如何实现AUTOTRIM时钟校准?
2025-12-16
37
CW32L083
有哪些应用场景?
2025-11-24
86
CW32L083
如何实现AUTOTRIM时钟校准?
2023-11-07
1259
CW32L083
的UART单线半双工模式介绍
2023-10-24
1920
CW32L083
微控制器数据手册
2023-09-14
856
基于
CW32L083
评估板的简易低功耗功能测试
2023-08-28
1795
CW32L083
移植驱动st7735 TFT屏
2023-07-04
2858
移植RT-Thread nano到
CW32L083
2023-07-03
23297
基于
CW32L083
设计的超低功耗温湿度计
2023-06-25
28146
CW32L083
RTC初始化设置
2023-06-24
2788
CW32L083
实现SHT30驱动
2023-06-22
4673
基于
CW32L083
的空调遥控器方案设计
2023-06-21
2329
CW32L083
段码屏驱动
2023-06-18
182089
全部
0
条评论
快来发表一下你的评论吧 !
发送
登录/注册
×
20
完善资料,
赚取积分