[PIC®/AVR®/dsPIC®产品] 都说MCC的I2C硬件难用,竟然稀里糊涂搞定了

[复制链接]
814|3
 楼主| 598330983 发表于 2023-10-21 19:23 | 显示全部楼层 |阅读模式
刚开始也不行,我就听了一会儿歌曲,又重新选择配置了一次,烧录后,听个歌,然后一看,好了。
论坛的几位兄弟快来看看。
  1. void OLED_Write_cmd(uint8_t cmd)
  2. {
  3. //        HAL_I2C_Mem_Write(&hi2c2, 0x78, 0x00, I2C_MEMADD_SIZE_8BIT, &cmd, 1, 0x100);
  4. /*
  5.     IIC_Start();
  6.     Write_IIC_Byte(0x78);                        //D/C#=0; R/W#=0
  7.     IIC_Wait_Ack();        
  8.     Write_IIC_Byte(0x00);                        //write cmd
  9.     IIC_Wait_Ack();        
  10.     Write_IIC_Byte(cmd);
  11.     IIC_Wait_Ack();        
  12.     IIC_Stop();
  13. */  
  14.     uint8_t cmd2[2];
  15.     cmd2[0] = 0x00;
  16.     cmd2[1] = cmd;
  17.     bool flag = 0;
  18.     flag = I2C1_Write(0x3C, cmd2, 2);
  19.     if(flag == true) LED_SetLow();
  20.     else LED_SetHigh();
  21. }


  22. void OLED_Write_data(uint8_t data)
  23. {
  24. //        HAL_I2C_Mem_Write(&hi2c2, 0x78, 0x40, I2C_MEMADD_SIZE_8BIT, &data, 1, 0x100);
  25. /*
  26.     IIC_Start();
  27.     Write_IIC_Byte(0x78);                        //D/C#=0; R/W#=0
  28.     IIC_Wait_Ack();        
  29.     Write_IIC_Byte(0x40);                        //write data
  30.     IIC_Wait_Ack();        
  31.     Write_IIC_Byte(data);
  32.     IIC_Wait_Ack();        
  33.     IIC_Stop();
  34. */
  35.     uint8_t data2[2];
  36.     data2[0] = 0x40;
  37.     data2[1] = data;
  38.     I2C1_Write(0x3C, data2, 2);
  39. }
我软硬的都写了,刚开始硬件不行,我改成了软件的,然后我又改回来,稀奇的不得了。


 楼主| 598330983 发表于 2023-10-21 19:26 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
dongnanxibei 发表于 2023-10-23 17:27 | 显示全部楼层
应该不是稀里糊涂,可能哪儿没更新到位。
wahahaheihei 发表于 2023-10-24 20:19 | 显示全部楼层
你试试软件DMA触发,估计不行吧,我串口搞不定。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

267

主题

5575

帖子

22

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