|
本帖最后由 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[I2C_WR_BUF_SIZE];
- copy_from_user(&i2c_buf, buf, size);
- *I2C_BYTECNT = size;
- printReg();
- printk("i2c write:\n");
- do {
- printk("%c", i2c_buf[i]);
- *I2C_DATAOUT = i2c_buf[i++];
- *I2C_STARTXFR = 0x0;
- while((*I2C_STATUS & SDOEMPTY) == 0);
- printk("%c", i2c_buf[i-1]);
- /*
- 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;
- }
复制代码 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|