0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F429的USB工程CAN通讯不正常经验分享

汽车玩家 来源:嵌入式大杂烩 作者:嵌入式大杂烩 2020-04-04 17:32 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最近某项目需要用到USBCAN

STM32F429的USB工程CAN通讯不正常经验分享

拿到这样的需求,我们当然是先得保证通讯正常。于是我找了一个USB例程与一个CAN例程,分别调试验证。

经过几番折腾已经保证了USB与上位机能正常通讯了,也能保证了CAN的正常收发(拿了两块开发板做验证)。

两头都没有问题了,再加上一些数据处理就差不多完成了。USB与CAN我都是第一次用,没想到那么顺利,美滋滋,正准备放松的时候,问题就来了。这是一个整体的东西,最终都要把这两部分集合起来吧。

我把CAN工程里关于CAN的部分移到USB工程里,这时候CAN竟然用不了了。这时候我就开始在怀疑自己是不是手贱误删了哪里了,于是重新来一遍,发现还是不行。

查了代码很久也没找出什么错误了,于是决定先不找错误了,进度要紧,这时候觉得应该是工程哪里有问题了,先想其它办法避过这个问题。

于是乎我就换着来,我把USB的工程里关于USB的部分移到CAN工程里。大家猜一猜发生了什么?USB竟然打都打不开!要炸了。。但是这时候已经很明确肯定不是移植问题了。CAN部分首先想到了波特率是不是对不上了,USB部分首先想到USB的时钟是从哪来的,之前没用过也没仔细看。带着这两个问题去查看了参考手册与代码,果然,STM32F429的USB的时钟还真有点特殊(不知道其它芯片是不是也是这样),其来自于PLL输出,而不是我们熟知的APB1、APB2:

STM32F429的USB工程CAN通讯不正常经验分享

从时钟树中我们可以看出:(1)的输出是系统时钟,(2)的输出是USB时钟。相关公式:

STM32F429的USB工程CAN通讯不正常经验分享

当然(2)的输出不仅仅是给USB提供时钟,还给RNG与SDIO提供时钟:

STM32F429的USB工程CAN通讯不正常经验分享

这一部分对应的代码在system_stm32f4xx.c中。下面看看USB工程、CAN工程中该文件的差别:

STM32F429的USB工程CAN通讯不正常经验分享

STM32F429的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的一个奇葩设计。

STM32F429的USB工程CAN通讯不正常经验分享

所以,大家以后再使用USB的时候当心这个陷阱!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    8372

    浏览量

    281690
  • CAN
    CAN
    +关注

    关注

    58

    文章

    3010

    浏览量

    471467
  • STM32
    +关注

    关注

    2305

    文章

    11120

    浏览量

    371146
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    L9300 VDD1输出电压不正常是什么原因导致的?

    L9300,VDD1输出电压不正常
    发表于 03-13 06:28

    关于STM32 CAN通信发送函数HAL_CAN_AddTxMessage()的最后一个参数填0和定义一个变量取地址的问题求解

    现卡死的情况,进入了硬件中断,而对于STM32F429IGT6则不会卡死,能够正常运行;如果定义一个uint32_t类型的变量,取变量的地址传参进去,两个片子都能够正常运行,目前搞不懂什么原因,对于直接传
    发表于 03-11 08:22

    求助,求分享STM32F429用IAR做的外部SPIFLASH下载算法例程

    你好,请问可不可以提供一下STM32F429用IAR做的外部SPIFLASH(例如W25Q128)下载算法例程,现在我的下载算法是能下载到外部FLASH但是不能跳到main函数,麻烦指教一下,谢谢!
    发表于 03-11 07:40

    使用STM32的SPI主机通讯需要唤醒吗?

    在使用STM32生成的工程里面,使用SPI作为主机模式,在与从机通讯的时候,第一次发送字节之前,需要发送一个空字节,SPI通讯正常,要不S
    发表于 03-10 08:22

    RST_ACTIVE信号不正常是什么原因导致的?

    RST_ACTIVE信号不正常
    发表于 02-25 07:08

    ADS1256AD在上电的时候,工作不正常是什么原因导致的?

    ADS1256AD转换芯片,在上电的时候,经常工作不正常
    发表于 02-14 08:08

    变频器输出波形不正常原因及解决方法

          变频器作为现代工业控制领域的核心设备之一,其稳定性和可靠性直接关系到生产线的正常运行和设备的使用寿命。然而,在实际应用中,变频器输出波形不正常的问题时有发生,这不仅影响了设备的性能,还可
    的头像 发表于 02-06 15:48 1632次阅读
    变频器输出波形<b class='flag-5'>不正常</b>原因及解决方法

    是什么原因使ADS4145 VCM脚输出电压不正常

    示波器测得CLKOUTP脚输出1.8V 80MHz时钟,但VCM脚输出电压不正常,不等于0.95V.请问大家是什么原因使VCM脚输出电压不正常?这个芯片要不要初始化?还有PAD脚是否一定要接地?
    发表于 01-10 08:09

    使用ADS8688时读出数据不正常,SDO线出现毛刺的原因?

    使用ADS8688时读出数据不正常,见下图,从上到下依次是:CS,CLK,SDI,SDO,如图,输入C000H,读取第一通道数据,后面都是输入0000,继续上一操作。 现在问题: 1、SDO线上
    发表于 01-08 06:54

    使用STM32F429来读写,读出来确是不固定的一个值,为什么?

    理解对不对不? 二、现在使用STM32F429来读写,短接MOSI和MISO读写值一致。实际写入ADS1256寄存器status值0x06,但读出来确是不固定的一个值,通过提高SPI速率到20M,发现
    发表于 12-30 08:11

    STM32模拟eeprom只有起始地址0x8001000正常其他地址都会造成单片机运行不正常怎么回事

    STM32F103C8T6模拟eeprom只有起始地址0x8001000正常其他地址都会造成单片机运行不正常怎么回事
    发表于 12-29 23:05

    ADS1274使用SPI读取,如何改进才能消除DRDY信号不正常的问题呢?

    DRDY,蓝色为SCLK: 当SCLK和FCLK都为1.3125 MHZ时的DRDY波形就不正常了,如下图,黄色为DRDY,蓝色为SCLK: “tDS”也变得不正常,如下图,黄色为DRDY,蓝色为
    发表于 12-27 07:11

    ADS5407可以正常采集数据,但是同步功能不正常,是什么原因?

    ADS5407可以正常采集数据,但是同步功能不正常,不管SYNC(P9N9)输入使用one-shot模式还是32个周期的方波模式,synout引脚都没有输出(P5N5F1 F24个脚
    发表于 12-23 06:49

    伺服电机振动不正常原因和维修及案例分析

          伺服电机作为自动化系统中的关键组件,其稳定运行对于整个生产线的效率和稳定性至关重要。然而,伺服电机在运行过程中可能会遇到振动不正常的问题,这不仅影响电机的性能,还可能对机械系统造成损害
    的头像 发表于 12-18 09:22 1810次阅读
    伺服电机振动<b class='flag-5'>不正常</b>原因和维修及案例分析

    ADS1247 SPI如何验证通讯是否正常

    目前我是写一个寄存器就读该寄存器的值,利用示波器查看,单片机SPI有发送数据给ADS1247,但是ADS1247发回的数据都为0xFF,那样表明通讯不正常,请问有无其他比较好的方法去验证是否通讯
    发表于 12-10 08:41