谁写过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;
} MARK, 谢谢分享
页:
[1]