[技术问答] 华大的HC32F005单片机I2C口使用问题--求助

[复制链接]
 楼主| yanruiqi 发表于 2020-8-15 20:33 | 显示全部楼层 |阅读模式
  1. void my_i2c_init(void)
  2. {
  3.    M0P_I2C->TM_f.TM=7;//I2C时钟配置为62KHZ
  4.    M0P_I2C->CR_f.H1M=1;
  5.    M0P_I2C->TMRUN=1;//使能I2C波特率计时器
  6.    M0P_I2C->CR_f.ENS=1;//使能I2C模块。
  7.    
  8. }


上面是I2C 初始化! I2C时钟已经打开了(已确认),
可下面的代码 只能停在 发送第一个字节后, 奇怪的是 发送地址+写 ,有应答!确定发的字节值没有问题!
  1. // 发送START信号
  2.     M0P_I2C->CR_f.STA=1;
  3.     while(M0P_I2C->CR_f.SI !=1);
  4.     while(M0P_I2C->STAT_f.I2CSTA !=0X08) ;
  5.    
  6.     //发送报文头信息
  7.     M0P_I2C->DATA_f.I2CDAT=0Xb0; //装载发送从站地址即写
  8.     M0P_I2C->CR_f.SI =0;//准备发送地址
  9.     while(M0P_I2C->CR_f.SI !=1);//等待
  10.     while(M0P_I2C->STAT_f.I2CSTA !=0X18) ;
  11.    
  12.     //发送固定的第1个字节
  13.     M0P_I2C->DATA_f.I2CDAT=0X02; //此值固定
  14.     M0P_I2C->CR_f.SI =0;//准备发送
  15.     while(M0P_I2C->CR_f.SI !=1);//等待
  16.     //只运行到此,永远等不到 M0P_I2C->STAT_f.I2CSTA =0X28,
  17.     //此时M0P_I2C->STAT_f.I2CSTA 值为0X08 !WHY?
  18.     while(M0P_I2C->STAT_f.I2CSTA !=0X28);
  19.     M0P_GPIO->P1OUT_f.P15=0;//LED灯不亮!!!没有运行到此!!!



 楼主| yanruiqi 发表于 2020-8-15 20:37 | 显示全部楼层
为什么  发送 从机地址+写 后,从设备有回应,再继续写一个字节 ,从设备就没有回应了! 这个字节值没有错!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

21

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部