选型选中STM32F103CBT6,USB与CAN可否可以同时共用!
目前产品选型,选中STM32F103CBT6。
产品需求是MCU要小,在支持CAN,USB的情况小封装越小越好。48只脚的正好。
但是现在得到咨询为此MCU USB和CAN不能同时使用。
因此特来请教版主,对于此MCU是否有其他方法可以做到CAN和USB同时共用。
谢谢,或者推荐一颗符合我需求的MCU。谢谢。
香帮主,救火啊!
香帮主,各路大侠快来江湖救急啊!
谢谢。
USB和CAN不能同时使用,但可以在同一个应用中分时使用
这是因为USB和CAN使用了相同的RAM区,同时使用将导致RAM区数据冲突。
分时使用,是否可以保证CAN,USB都不丢失数据。
如果分时使用,是否可以保证CAN,USB都不丢失数据。
或者是否可以帮我评估一下在CAN在1Mbps,USB在全速批量传输下,用软件分时使用CAN和USB,是否可以保证CAN和USB的数据都不丢失。
目前我自己的看法是没办法做到。不知各位大侠高见?或者有更好的办法解决这个问题。
谢谢。
要回答这个问题,需要首先请教楼主一个问题
我对CAN的协议不很清楚,想请教楼主一个问题,在CAN的协议中是否有握手机制,保证在接受设备繁忙时发送设备能够推迟数据报的发送;在USB协议中有NAK的机制可以保证这一点。
我的理解是,任何通信协议都应该有这样的机制,如果是这样的话,4楼的要求应该可以满足,但需要一些软件的控制。
基本原理就是在CAN通信时,把USB的部分置于NAK状态;在USB通信时,把CAN的部分置于对应的NAK状态。具体到你的软件,要根据你的应用环境量身定做了。
这是因为USB和CAN使用了相同的RAM区
对于这样的设计, 不知道优点在哪里?
坛子中曾经讨论过这个问题,这个与对这两个接口的定位有
请看以前的一个帖子:
STM32F103 中的 USB 和 CAN 能不能同时使用?;我在5楼回答了这个问题,我们会重视大家的建议。
CAN没有延时等待发送的机制
CAN是多主,广播方式传输数据,一个节点发出数据要求另一个节点接受,另一个节点的验收滤波器会过滤数据的ID,如果匹配,放入邮箱,同时给出应答信号。如果发出的数据没有应答,超时后发送数据的节点会记录错误到它的发送错误寄存器,虽可通过软件来做是重发数据还是放弃,但这个操作也与协议层的定义有关。
CAN虽然可以通过发送“远程帧”来请求数据,但这样的做法由于是主动方式,会失去实时的优势。
谢谢8楼的科普介绍,再问一个问题
如果接受方的接收缓冲器满了,如果发送方又有数据来,如何处理呢?
谢谢各位的回复
感谢8楼回复:
回复9楼:在以往的MCU中,如果接受缓冲区数据满了,又有新的数据接收到,这时就会有写覆盖产生,并且特殊寄存器的MSGLST位被set,表明有一笔报文丢失。
感謝香幫主在5樓的建議。但是CAN沒有類似于USB的NAK的模式。并且對于CAN數據的處理MCU要始終保持Ready狀態。因此分時應該是不可以的了。
如果能將公用的SRAM分割成兩部分,以部分CAN使用一部分USB使用就好了。
我们正在分析,可能可以通过减小USB的RAM使用量达到共用的
楼主如果方便,可以通过mcu.china@st.com联络,我们详细谈一下可以更深入地讨论。如果我没有错的话,这几天一直在与你们做硬件的同事电话讨论这个问题,但我不确定那一定是你公司的同事。
感謝各位
正如版主所说!由于最近都没时间详细看DATASHEET,所以偷懒来这里请教版主和各位大侠.
如果有相同应用需求的可以大家一起讨论解决之道.
我的MAIL:alexqiuok@yahoo.com
谢谢
12楼提供的email是错的
我按照这个地址发email被退回,原因是yahoo.com没有这个用户。
这个问题比较复杂,最好在电话中讨论比较清楚。当然我们需要详细了解你的项目和项目背景。
请通过mcu.china@st.com联络。
抱歉!
mail:alexqiuok@yahoo.com.cn
我有发mail给版主。请查收!
再次感谢您的关注和支持
收到了,已经回复
我们在电话中继续保持沟通。谢谢!
今天恶补了一下CAN的协议最基本的部分,对数据帧格式略有
CAN的数据帧大体分为两种格式:标准格式和扩展格式。
| SOF(帧起始) | 仲裁域 | 控制域 | 数据域 | CRC域 | 应答域 | 帧结尾 |
- SOF(帧起始):1位;标准格式和扩展格式一样。
- 仲裁域:
标准格式为12位 = 11位标识符 + RTR位
扩展格式为32位 = 11位标识符 + SRR位 + IDE位 + 18位标识符 + RTR位
RTR = Remote Transmission Request Bit (远程发送请求位)
SRR = Substitute Remote Request Bit (替代远程请求位)
IDE = Identifier Extension Bit (标识符扩展位)
- 控制域:6位,= IDE/r1 + r0 + 数据长度代码,标准格式和扩展格式一样。
数据长度代码 = (DLC3 + DLC2 + DLC1 + DLC0)
r1、r0 为保留位
- 数据域:0~8个字节,先发送MSB。
- CRC域:共16位 = 15位CRC序列 + 1位CRC界定符;标准格式和扩展格式一样。
- 应答域:2位;标准格式和扩展格式一样。
- 帧结尾:7位;标准格式和扩展格式一样。
标准格式时共44~108位的长度;扩展格式时共64~128位的长度。
俺还是CAN的菜鸟,请各位大侠指正。
^_^! 顶一把。
好久前弄过AT90CAN128/MCP2510,都快忘了,现在从搞STM32 CAN!
我有950片STM32F103CBT6,我们是医疗公司自己之前采购的,一直放在恒温恒湿箱里, https://item.taobao.com/item.htm?spm=a230r.7195193.1997079397.8.d89b2750yHriHj&id=650065253178&abbucket=1