用两片8H8K64U芯片做主从机I2C通信,从机接到数据都会*2
两片8H8K64U芯片做主从机I2C通信,从机接到数据都会*2 主机发1从机收到2 主机发2从机收到4 主机发4从机收到8,都会大两倍,有没有大师碰到过降低通讯速率,或 加上拉电阻, 代码发上来让大家一起看看啊 来自STC8H8K64U实验箱9.6 https://www.stcaimcu.com/forum.php?mod=attachment&aid=ODg3MnwwZDc4OTI3ZnwxNjk4ODkxMzUxfDE3fDE1MjU=
检查你的代码逻辑是不是哪里多了一个乘法或移位 LAOXU 发表于 2024-2-20 08:22
降低通讯速率,或 加上拉电阻,
内置上拉电阻 21cnsound 发表于 2024-2-20 08:55
代码发上来让大家一起看看啊
是官方测试代码 kksk 发表于 2024-2-20 10:14
检查你的代码逻辑是不是哪里多了一个乘法或移位
没有呢,我用官方测试代码 I2CCFG = 0x97;//12M速度配612/0.4/2-5 /2//使能I2C从机模式
I2CSLADR = 0x5a;
I2CSLST = 0x00;
I2CSLCR = 0x00; //禁止从机模式中断
while (1)
{
if (I2CSLST & 0x40) //处理START事件STAIF:
{
I2CSLST &= ~0x40; //处理START事件
if (I2CSLST & 0x20) //处理RECV事件
{
I2CSLST &= ~0x20; //处理RECV事件
buffer = I2CRXD;
}
if (I2CSLST & 0x10)
{
I2CSLST &= ~0x10; //处理SEND事件
if (I2CSLST & 0x02)//接收到NAK则停止读取数据
{
I2CSLST &= ~0x02;
}
}
}
if (I2CSLST & 0x08)
{
I2CSLST &= ~0x08; //处理STOP事件
isda = 1;
isma = 1;
}
Dis_seg_buff(); //1638显示函数
} void i2c_hs_xie(void)//写
{
I2CCFG = 0xff;
// I2CCFG = 0xd7; // 1100 000+01 011140M速度配2340/0.4/2-5 /2 //使能I2C主机模式
I2CMSST = 0x00;
Start(); //发送起始命令
SendData(0x5a); //发送设备地址(010_1101B)+写命令(0B)
RecvACK();
SendData( iic_sz_rt); //写测试数据1
//写测试数据2
RecvACK();
Stop(); //发送停止命令
}
主机程序 晶振40M
页:
[1]