打印
[PIC®/AVR®/dsPIC®产品]

都说MCC的I2C硬件难用,竟然稀里糊涂搞定了

[复制链接]
632|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
598330983|  楼主 | 2023-10-21 19:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
刚开始也不行,我就听了一会儿歌曲,又重新选择配置了一次,烧录后,听个歌,然后一看,好了。
论坛的几位兄弟快来看看。
void OLED_Write_cmd(uint8_t cmd)
{
//        HAL_I2C_Mem_Write(&hi2c2, 0x78, 0x00, I2C_MEMADD_SIZE_8BIT, &cmd, 1, 0x100);
/*
    IIC_Start();
    Write_IIC_Byte(0x78);                        //D/C#=0; R/W#=0
    IIC_Wait_Ack();        
    Write_IIC_Byte(0x00);                        //write cmd
    IIC_Wait_Ack();        
    Write_IIC_Byte(cmd);
    IIC_Wait_Ack();        
    IIC_Stop();
*/  
    uint8_t cmd2[2];
    cmd2[0] = 0x00;
    cmd2[1] = cmd;
    bool flag = 0;
    flag = I2C1_Write(0x3C, cmd2, 2);
    if(flag == true) LED_SetLow();
    else LED_SetHigh();
}


void OLED_Write_data(uint8_t data)
{
//        HAL_I2C_Mem_Write(&hi2c2, 0x78, 0x40, I2C_MEMADD_SIZE_8BIT, &data, 1, 0x100);
/*
    IIC_Start();
    Write_IIC_Byte(0x78);                        //D/C#=0; R/W#=0
    IIC_Wait_Ack();        
    Write_IIC_Byte(0x40);                        //write data
    IIC_Wait_Ack();        
    Write_IIC_Byte(data);
    IIC_Wait_Ack();        
    IIC_Stop();
*/
    uint8_t data2[2];
    data2[0] = 0x40;
    data2[1] = data;
    I2C1_Write(0x3C, data2, 2);
}
我软硬的都写了,刚开始硬件不行,我改成了软件的,然后我又改回来,稀奇的不得了。


使用特权

评论回复
沙发
598330983|  楼主 | 2023-10-21 19:26 | 只看该作者

使用特权

评论回复
板凳
dongnanxibei| | 2023-10-23 17:27 | 只看该作者
应该不是稀里糊涂,可能哪儿没更新到位。

使用特权

评论回复
地板
wahahaheihei| | 2023-10-24 20:19 | 只看该作者
你试试软件DMA触发,估计不行吧,我串口搞不定。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

245

主题

5383

帖子

22

粉丝