sohappyoh 发表于 2015-11-9 13:49:13

谁写过RT5350的I2C驱动,请教一下这是怎么回事?

本帖最后由 sohappyoh 于 2015-11-11 09:25 编辑

找到原因:我的STM32做从机,发现STM32接收的数据过长会死掉,问题解决


经常死机(没有加超时处理),发送数据会断,而且着这样的:



static ssize_t i2c_write(struct file *file, const char __user *buf, size_t size, loff_t *ppos)
{
        unsigned int i = 0;       
        unsigned char i2c_buf;
        copy_from_user(&i2c_buf, buf, size);

        *I2C_BYTECNT = size;
    printReg();
        printk("i2c write:\n");   
        do {
      printk("%c", i2c_buf);      
                *I2C_DATAOUT = i2c_buf;
                *I2C_STARTXFR = 0x0;
      while((*I2C_STATUS & SDOEMPTY) == 0);
      printk("%c", i2c_buf);         
      /*
                while(1){
            if(((*I2C_STATUS & SDOEMPTY) == SDOEMPTY) && ((*I2C_STATUS & BUSY) == 0)){
                break;   
            }
            if(((*I2C_STATUS & ACKERR) == ACKERR) || ((*I2C_STATUS & STARTERR) == STARTERR)) {
                break;               
            }
      };
      */
        }while(i<size);
        return size;
}

文艺小青年 发表于 2016-5-15 17:08:00

MARK, 谢谢分享
页: [1]
查看完整版本: 谁写过RT5350的I2C驱动,请教一下这是怎么回事?