最近某项目需要用到USB与CAN:
拿到这样的需求,我们当然是先得保证通讯正常。于是我找了一个USB例程与一个CAN例程,分别调试验证。
经过几番折腾已经保证了USB与上位机能正常通讯了,也能保证了CAN的正常收发(拿了两块开发板做验证)。
两头都没有问题了,再加上一些数据处理就差不多完成了。USB与CAN我都是第一次用,没想到那么顺利,美滋滋,正准备放松的时候,问题就来了。这是一个整体的东西,最终都要把这两部分集合起来吧。
我把CAN工程里关于CAN的部分移到USB工程里,这时候CAN竟然用不了了。这时候我就开始在怀疑自己是不是手贱误删了哪里了,于是重新来一遍,发现还是不行。
查了代码很久也没找出什么错误了,于是决定先不找错误了,进度要紧,这时候觉得应该是工程哪里有问题了,先想其它办法避过这个问题。
于是乎我就换着来,我把USB的工程里关于USB的部分移到CAN工程里。大家猜一猜发生了什么?USB竟然打都打不开!要炸了。。但是这时候已经很明确肯定不是移植问题了。
CAN部分首先想到了波特率是不是对不上了,USB部分首先想到USB的时钟是从哪来的,之前没用过也没仔细看。带着这两个问题去查看了参考手册与代码,果然,STM32F429的USB的时钟还真有点特殊(不知道其它芯片是不是也是这样),其来自于PLL输出,而不是我们熟知的APB1、APB2:
从时钟树中我们可以看出:(1)的输出是系统时钟,(2)的输出是USB时钟。相关公式:
当然(2)的输出不仅仅是给USB提供时钟,还给RNG与SDIO提供时钟:
这一部分对应的代码在system_stm32f4xx.c中。下面看看USB工程、CAN工程中该文件的差别:
可见,问题找出来了。在USB工程中,CAN通讯不正常是因为系统时钟降为168MHz,导致APB1时钟变为42MHz,而代码中是用APB1=45MHz来计算CAN的波特率的,所以导致波特率对应不上导致CAN通讯错误。
在CAN工程中,系统时钟为180MHz,USB OTG FS时钟变为51MHz,超过了正常的48MHz,导致USB不能正常工作。
所以,每当用到USB,都得单独配置PLLCLK = 168MHz了,这样的话其他外设可能得改变原有的配置,比如这里的CAN就得用APB1=42MHz来计算波特率了,否则就会出错。这很不方便。。
正如火哥说的,这是ST的一个奇葩设计。
所以,大家以后再使用USB的时候当心这个陷阱!
关键字:STM32F429 USB CAN
引用地址:
STM32 | STM32F429的USB有坑?
推荐阅读最新更新时间:2024-11-10 12:41
车载时钟同步can_tsync同步原理
can_tsync同步原理 整体来说,can的时间同步还是比较简单的,如下图所示,整个过程如下(tips:时间戳自1970年1月1日00:00:00经过的时间,是由秒+纳秒组成的。): 1time master在t01时刻以广播的形式发送一个sync报文,并把时间秒部分的时间放到报文上,发送到time slave;使用can confirmation的机制,记下sync报文实际从can驱动发送出去的时间,t1r. time slave在t2r时刻接收到sync报文 time master在sync发送完之后,随后发送follow up报文,并把t1r的纳秒通过报文发送出去,即t4r = t2r-s(t0r)。这里有一个潜在
[嵌入式]
飞兆半导体环保型电池充电器可减少充电时间 并为USB外设供电
移动设备如今正在成为强大的计算产品,功能越来越丰富,而且具有身临其境的用户体验。 随着USB充电标准的制订,同时电子设备(尤其是手机)通过USB端口供电的趋势越来越明显,产品设计人员面临很多挑战,在实现先进产品功能的同时,必须确保快速安全地对高容量电池充电,并支持连接的外设。 飞兆半导体公司(纽约证券交易所代码: FCS)的FAN54015是符合USB标准的单节锂离子电池开关充电器,可为设计人员提供移动设备电池充电的安全性、精度、效率和解决方案尺寸的最佳平衡。 为缩短充电时间、减轻散热,FAN54015开关充电器采用高效、环保的3MHz DC-DC同步降压转换器,能够提供1.45 A电流。 此外,为适应传统和新兴锂
[电源管理]
未来的CAN是啥样子—CAN XL构想
摘要:随着信息技术的快速发展,用户应用需求的增加,数据吞吐量越来越大,对CAN总线的通信数据量与通信质量要求也越来越高,那么下一代的CAN——CAN XL会是什么样子的呢? 一、对CAN XL的要求 有效负载长度:与以太网帧长度一样; 可靠性:等于或者优于CAN,CAN FD和10Mbit/s以太网的稳定性; 鲁棒性:与CAN FD一样好,甚至要优于10Mbit/s以太网; 波特率:在数据段的传输速率最大可达10Mbit/s; 兼容性:向后兼容CAN FD。 二、CAN XL简介 CAN,CAN FD,CAN XL报头比较 图 1 CAN, CAN
[汽车电子]
让设备轻松升级的独立式USB Type-C 输电控制器
意法半导体推出 STUSB4500独立式USB Type-C 输电控制器 。集供电和充电为一体的标准USB-C接口兼具便利性和环境效益。如今STUSB4500将把这些优势延伸到到各类消费、工业和医疗产品。 STUSB4500是一款通过相关行业认证的独立式USB PD控制器,专为使用一条USB-C线缆供电的受电端应用优化设计,用户可以按照自己的应用方案轻松地自定义STUSB4500的设置。 根据存放在内部非易失性存储器内的默认电源配置文件(PDO),STUSB4500控制器会执行意法半导体独有的算法,与供电设备协商输电协议,无需任何内部支持(自动运行模式),这使其成为自动大功率配置文件充电的理想选择,特别适合给无电量的
[电源管理]
USB入门系列之一 —— USB概述
USB是什么呢?一说USB是You SB的意思,即“你傻B”的意思。另一种说法是USB其实是美国的弟弟,因为美国叫USA,USB当然是他的弟弟了。 那么USB到底是什么呢?其实USB是通用串行总线(Universal Serial Bus)的简写,它已经有了10多年的历史了。USB协议出现过的版本有USB1.0,USB1.1,USB2.0。由于USB是主从模式,设备与设备之间、主机与主机之间不能互连,为了解决这个问题,扩大USB的使用范围,就出现了USB OTG(On The Go)。USB OTG的做法是,同一个设备,在不同的场合下可以在主机或从机之间切换。在USB1.0和USB1.1版本中,只支持1.5Mbps的低速(L
[嵌入式]
苹果给之前买了MacBook Pro USB-C配件的顾客补差价了
新浪手机讯 11月8日消息,上周苹果宣布决定降低新MacBook Pro用户USB-C配件的价格。苹果在发正式公告之前已经将客户购买的配件产品纳入了降价之中。 购买了配件的顾客账户内将自动收到降价后的补差价,下面的截图就是USB-C电缆的购买证明。
苹果消息截图
苹果公司会为在上周五(11月4日)降价之前购买MacBook Pro电脑USB-C配件的用户补发差价。
苹果还指出USB-C的定价和第三方的销售只是暂时的,销售时间会从10月27日持续到今年年底。苹果目前还提供了LG 4K和5K显示器的折扣。
早些时候,苹果开始为有触控条的MacBook Pro装上了信用卡的服务,这也意味着这
[手机便携]
商人重利轻别离:那些年苹果和USB的分分合合
喜新厌旧,人之常情,也是大公司常态。 大公司见异思迁的背后,往往都由利益推动。即使是一个小小的接口,背后都是博弈。像苹果这么傲娇的公司,更是把和USB接口的爱恨情仇演绎得淋漓尽致。
当年,他们曾经是在一起的
最初Mac和搭载Windows PC的共同接口很少。比如,PC上打印机的接口是并行接口,鼠标和键盘接口是PS/2接口;Mac上的硬盘接口是SCSI接口,鼠标和键盘接口是ADB接口。即使是在调制解调器和外设接口方面,双方都是用的不同接口。
当时的Mac濒临死亡,完全不占优。1998年苹果推出iMac,抛弃了自己的旧接口,而是采用了Intel研发的标准USB(Universal Serial Bus)接口。此
[嵌入式]
比科奇和iCana签署战略合作协议共推5G开放式RAN小基站参考平台
双方将联合开发高性价比、高可靠性的5G NR FR1小基站射频单元(RU)参考设计 中国杭州和中国台北 – 2023年4月26日 – 5G开放式RAN基带芯片和电信级软件提供商比科奇,与为无线基础设施市场提供射频芯片的无晶圆厂半导体公司iCana联合宣布 :双方建立全新的战略合作伙伴关系,旨在利用双方各自的优势共同开发5G开放式RAN小基站射频单元参考平台。联合推出的5G NR FR1小基站射频单元(RU)参考设计将使客户能够以更快、更高效、更具成本优势地将其产品推向市场。 比科奇专为小基站设计的创新数字预失真(DPD)技术与iCana支持DPD功能的4 W、8 W、20 W功率放大器(采用GaAs和GaN技术实现)相结合
[网络通信]