1. I2C从机模式没必要设置SPEED参数
我早上有参考昨天发的程序稍微整理了一下,用逻辑分析仪看可以接到addr和data了。但是中断里面I2CRXD这个获取data的地方进不了。
我查了逻辑分析仪,ACK这里是低电平,stop也接到了。这里不知道为啥没有进去
if (I2CSLST & 0x40)
{
I2CSLST &= ~0x40; //´¦ÀíSTARTʼþ
}
else if (I2CSLST & 0x20)
{
I2CSLST &= ~0x20; //´¦ÀíRECVʼþ
if (isda)
{
isda = 0; //´¦ÀíRECVʼþ£¨RECV DEVICE ADDR£©
}
else if (isma)
{
isma = 0; //´¦ÀíRECVʼþ£¨RECV MEMORY ADDR£©
addr = I2CRXD;
I2CTXD = buffer;
}
else
{
//这里获取data的地方不能进
buffer = I2CRXD; //´¦ÀíRECVʼþ£¨RECV DATA£©
//ÏȰÑbuf½ÓÊÕÂú
remote_an_time = I2CRXD;
我从逻辑分析仪里面看接收的逻辑没问题 czdspeed 发表于 2024-3-8 10:11
我早上有参考昨天发的程序稍微整理了一下,用逻辑分析仪看可以接到addr和data了。但是中断里面I2CRXD这个 ...
在获取data的地方加个IO口翻转,烧录到芯片里面,用示波器/逻辑分析仪测量脚位电平判断是不是真的没进去。 乘风飞扬 发表于 2024-3-8 10:59
在获取data的地方加个IO口翻转,烧录到芯片里面,用示波器/逻辑分析仪测量脚位电平判断是不是真的没进去 ...
有反转,我这里看了一下可能是我那串口仿真器的速度不够没有跟踪到。通过IO方式验证了,buf已经接到了 我也发现只要加上代码I2CCFG = 0x80,后续再操作P5.4 P5.5就无效了,始终输出为高电平,去掉后,P5.4 P5.5的输出立即生效,原因不明
页:
1
[2]