打印
[STM32F1]

STM32 usb I2C

[复制链接]
2007|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yang4469|  楼主 | 2014-10-15 11:51 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yang4469 于 2014-10-15 17:05 编辑

在弄一个USB的I2C转接器,测试发现数据出错,usb的数据没有问题,通过串口打印出来和上位机发送的数据一致,但是stm32发送给下位机的数据就会偶尔出错,不是完全错误
单独i2C的时候没有问题,通过两片32的通讯发现完全没有问题
初步怀疑是中断设置的问题
但是我设定的是i2c优先级比usb高,百思不得其解

好吧,我又把两个的中断的优先级反过来,还是不行.......
不知道还有哪些地方可能出问题
想请教香主,难道stm32F1的usb和I2C在硬件上面有这个缺陷吗?@香水城  
补充:
scl sda  3.3v上拉4.7k电阻,也试过通讯线接入一个160欧姆的电阻
I2C的通信过程是加在usb里面的,响应上位机传送过来的内容
沙发
mmuuss586| | 2014-10-15 12:19 | 只看该作者
USB响应超时了吧;
I2C的速率提高下,提高代码效率看看;

使用特权

评论回复
板凳
yang4469|  楼主 | 2014-10-15 12:27 | 只看该作者
本帖最后由 yang4469 于 2014-10-15 12:42 编辑
mmuuss586 发表于 2014-10-15 12:19
USB响应超时了吧;
I2C的速率提高下,提高代码效率看看;

USB响应超时?超时的话Bushound能捕捉到的啊;
通常错误是出现在发送了几百个字节之后
I2C是400k的速率,f1的极限,而且每次响应I2C发送最多50字节(实时发送usb接收的数据),担心太快,甚至还的加入了延时1-2ms测试过,
代码效率应该没有问题,除了i2c发送数据的部分,没有其他的了,虽然我是在usb底层库文件usb_core.c 中函数  void DataStageOut(void)里面加入的I2C发送数据命令

使用特权

评论回复
地板
yang4469|  楼主 | 2014-10-15 14:39 | 只看该作者
最新测试结果,I2C被USB通讯干扰了
将I2C通讯传输的内容全部提取到main里面,与usb隔离开
当usb的上位机软件关闭时,I2C通讯正常,数据内容完全无误
当usb的上位机软件开启时(stm32会返回一些命令,此时的命令与I2C无关),I2C通讯的部分数据错误,2w个数据大概错1000个,每次错误不一样,随机的

使用特权

评论回复
5
huangfeng33| | 2014-10-30 23:23 | 只看该作者
一边做一边学I2C、USB,USB是大大头,板凳子学习的。

使用特权

评论回复
6
ywlzh| | 2021-12-8 17:26 | 只看该作者
这个是用的USB CDC协议弄的吗

使用特权

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

本版积分规则

15

主题

267

帖子

0

粉丝