打印
[ZLG-MCU]

LM3S IIC多主问题

[复制链接]
1568|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mj2008|  楼主 | 2008-4-10 16:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
lm, iic, I2c, tmp, ST
iic多主系统调试时i2cmcs寄存器读出为0x70是怎么回事呢?丢失了仲裁但error位却没有置位,
这个寄存器中各个位之间是怎样的制约关系呢?和他资料说的不一样啊:
“error位表示.......,或者是由于控制器丢失仲裁而产生。”
下面是我的中断服务程序,发送出错的处理对不对?另外问如果这个寄存器读出为0x70的时候我该怎么处理
void IIC_ISR_Handler()
{
    volatile INT32U tmp;
    /**************************/
    if( I2C0_MMIS_R ){ // 主机中断
        tmp = I2C0_MCS_R;  // 第一次进来后这个变量为0x70 ???
        I2CMasterIntClear(I2C0_MASTER_BASE);// 清主机中断

        if( tmp & 0x1E ) { // 发送出错
            if( tmp & 0x10 ){//丢失仲裁,发重复起始条件
                I2C0_MCS_R = 0x03; // IICBus.TxdOptStat = IIC_TXD;
            } else {
                I2C0_MCS_R = 0x04;    // 这里主机发送停止条件,系统将在定时中断中重新开始发送
                IICBus.TxdOptStat = IIC_FAIL;
            }
        } else {
            。。。。
        }

相关帖子

沙发
mj2008|  楼主 | 2008-4-11 13:43 | 只看该作者

总算通了

在进入中断后把MCS的内容和ISR中执行路径发送到uart看看,就知道问题的所在了,
现在2个设备抢着给第3个设备发送大量数据都没有问题了。剩下的工作就是测一下几十个设备一起抢了,哈哈。

使用特权

评论回复
板凳
wahahaabc| | 2008-4-15 13:02 | 只看该作者

不知楼主问题出在哪里,然后又调通了

也让其他人少走些弯路

使用特权

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

本版积分规则

7

主题

67

帖子

0

粉丝