OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7445|回复: 3

stm32f103RCT6 USB与CAN分时复用的切换问题

[复制链接]

3

主题

3

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2017-10-25
在线时间
10 小时
发表于 2017-12-7 14:40:34 | 显示全部楼层 |阅读模式
原子的mini板
使用了CAN1接收功能
使用了USB的读卡器功能
通过一个电子继电器切换PA11,PA12的引脚连接(连接CANH,CANL或者是USBD+,USBD-),
插入USB前,PA11,PA12连接CAN,每秒接收一次数据。
插入USB后,继电器动作,硬件连接切换到USBD+,USBD-,USB电源通过外部中断上升沿触发外部中断(中断服务函数初始化USB),使用其读卡器功能,在PC端访问SD卡
拔出USB时,通过下降沿触发另一个外部中断(中断服务调用CAN初始化函数),继续接收CAN数据。

目前遇到了一个问题,就是在拔出USB之后CAN并不能正常工作,USB初始化共有三个函数
USB_Interrupts_Config();   
Set_USBClock();   
USB_Init();
如果注释掉USB_Init()函数则可以做到上述的切换。所以我怀疑是这个USB_Init()函数更改了某些寄存器的某些位,影响了CAN的初始化,在论坛查了查,没发现USB_Init()函数改动了寄存器。有没有人遇到过类似的问题,请教一下。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

279

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2015-3-27
在线时间
98 小时
发表于 2017-12-7 17:27:03 | 显示全部楼层
USB 和 CAN 使用同一块 数据缓冲区 题主这个有注意吗?
回复 支持 0 反对 1

使用道具 举报

10

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-2
在线时间
39 小时
发表于 2018-1-25 15:01:36 | 显示全部楼层
视频上不是说了吗,USB和CAN不能同时复用,两个缓冲区想冲突
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2020-9-2
在线时间
5 小时
发表于 2020-10-27 23:15:17 来自手机 | 显示全部楼层
最近也是遇到can只能发送不能接受的问题,使用低速芯片TJA1055T就是不行,用高速芯片TJA1050完全没问题,一直以为是5v和3.3v电平匹配的问题,或者can转换电路有问题,折腾了很久,最后不小心发现USB数据线插的深了就rx就不正常,稍微拔出一点就好用了,这才明白开发板的USB数据线其实也是共用两个口而不是只有供电,应该是干扰了,不过和楼主的问题不一样
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-4 15:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表