最近因为CAN的问题弄了我好几天时间,总结一下:
1:STM32F407开发板回环模式与CAN1给CAN2发数据都是OK的,STM32F429不行。
对比初始化函数以及检查硬件,120欧电阻还是要的,什么光耦电路能去掉还是去掉,H/L直接从TJA1050芯片出来即可。
2:STM32F407与STM32F429回环模式,can1与can2通信都成功,但是STM32F407与STM32F429通信不成功。
这是为毛啊??不急,再做个试验,STM32F429两块板子能通信成功,不存在硬件问题了,定位应该是波特率不匹配的问题。
按照STM32规格书波特率计算方式应该是:
can波特率=(APB1时钟/(分频系数*(SYNC_SEG+BS1+BS2)));
再看看自己的配置,怎么看怎么对啊,虽然429系统时钟是180M,407系统时钟是168M,但407与429都是设置的是250kbps。
好吧,代码是看不出结果的。
1:拿个示波器来量吧,唯一借的一个示波器是坏的,can是通过H/L之前的电平差来计算1与0的,所以可以测试出来,我是没测成功,放弃。
2:弄个can转USB吧,407设置250Kbps通信成功,429设置250Kbps不成功。
更加确认波特率不对,但是为什么不对呢,那就去研究下系统时钟的产生,大概说下:
系统时钟可以由好几种方式产生,我的板是有外部晶振产生的,一般STM32官方固件库默认外部晶振是8M,但是我这块板子外部晶振是25M,那就怀疑是不是这方面配置,修改下配置25M(具体配置自行百度),再次试验,成功。
关键字:STM32F429 CAN通信 不成功
引用地址:
STM32F429 CAN通信不成功
推荐阅读最新更新时间:2024-11-09 19:40
恩智浦最新CAN收发器系列保障CAN通信安全而无需加密
中国上海,2018年1月31日 - 恩智浦半导体NXP Semiconductors(纳斯达克代码:NXPI),汽车半导体解决方案供应商,今日宣布推出新的安全型CAN收 发器系列,该系列为安全型CAN通信提供无缝、高效的解决方案,且无需软件或加密。 每辆汽车中都使用CAN网络来连接电子控制单元(ECU),预计未来十年它仍会是主导性网络。随着汽车电子设备不断增多,跨CAN网络交换的实时数据量也在增加。 CAN是一个强大的多点连接网络,迄今为止,车内大部分数据通信都没有安全措施,单个受到破坏的ECU可以直接访问联网的ECU。目前市场上的安全解决方案 使用基于加密和复杂密钥管理的报文认证码 (MAC)来保护CAN通信,但这势必造成C
[汽车电子]
STM32F429 CAN通信不成功
最近因为CAN的问题弄了我好几天时间,总结一下: 1:STM32F407开发板回环模式与CAN1给CAN2发数据都是OK的,STM32F429不行。 对比初始化函数以及检查硬件,120欧电阻还是要的,什么光耦电路能去掉还是去掉,H/L直接从TJA1050芯片出来即可。 2:STM32F407与STM32F429回环模式,can1与can2通信都成功,但是STM32F407与STM32F429通信不成功。 这是为毛啊??不急,再做个试验,STM32F429两块板子能通信成功,不存在硬件问题了,定位应该是波特率不匹配的问题。 按照STM32规格书波特率计算方式应该是: can波特率=(APB1时钟/(分频系数*
[单片机]
STM32F429 >> 10. DMA_直接存储器访问
本工程板级支持包文件适用于野火stm32f429 开发板。 DMA 传输实现高速数据移动过程无需任何CPU 操作控制 其支持以下三种传输方式: 外设到存储器传输; 存储器到外设传输; 存储器到存储器传输。 功能框图: ① 外设通道选择 外设通道选择所解决的问题是决定哪一个外设作为数据传输的源地址或目标地址。 DMA1 请求映射: DMA2 请求映射: 每个外设请求都占用一个数据流通道,相同外设请求可以占用不同数据流通道。 ② 仲裁器 仲裁器管理数据流方法分为两个阶段。 第一阶段属于软件阶段,我们在配置数据流时可以通过寄存器设定其优先级别,具体配置DMA_SxCR 寄存器PL 位,可以设置为
[单片机]
STM32F429芯片带FIFO的DMA传输实现过程
STM32系列芯片都内置DMA外设,其中很多系列的DMA配备了FIFO。这里以STM32F429芯片及开发板为例,演示一下带FIFO的DMA传输实现过程。 大致情况是这样的,我用TIMER1通道1的比较事件触发DMA,将内存数据写进UART5的数据发送寄存器DR,并将UART5的TX/RX脚物理短接,同时开启UART5的DMA接收模式,即DMA将UART5接收到的数据写到指定的接收内存区。下面重点介绍UART5的DMA方式的接收过程。 首先使用STM32CubeMx完成基本配置。 下面是关于TIM1的相关配置,使用通道1的比较事件触发DMA,将内存数据写入UART的发送数据寄存器。为什么还要搞个定时器来触发,其中一个原因是
[单片机]
STM32F429 如何使用LCD(2)
刚开始是在安富莱V6的开发板上焊接的调试了好久。需要注意的坑有一下: (1)该屏幕使用LCD驱动为ILI9806 ,使用的触摸芯片是ft6206。 第一步选择:LCD使用RGB8888 IM0-2 = 1 1 0 (电阻配置) 第二步:配置LTDC接口参照上一章,同时需要留出来SPI接口对LCD进行配置。 第三步:配置IIC接口的ft6206芯片。 引脚分配: CS:PB9 SDI :PB5 SCL :PB6 INT: H7 SDA:PB3 SCL :PB6(复用) /* GPIOs Configuration / / ±-----------------------±----------------------±------
[单片机]
STM32F429——GPIO
除非特别说明,否则本部分适用于整个 STM32F4xx 系列 七 .通用I/O简介 7.1 GPIO 简介 每个通用 I/O 端口包括 4 个 32 位配置寄存器(GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR 、GPIOx_PUPDR), 2个32位数据寄存器( GPIOx_IDR 和GPIOx_ODR)、1个32位置位/复位寄存器(GPIOx_BSSR)、1个32位锁定寄存器(GPIOx_LCKR)和 2个32位复用功能选择寄存器(GPIOx_AFRH和GPIOx_AFRL)。 7.2 GPIO工作模式 GPIO可以设置成一下模式 1.输入模式(上拉/下拉/浮空) 在输入模式
[单片机]
STM32F429 >> 4. 使用固件库点亮LED
本工程板级支持包文件适用于野火stm32f429 开发板。 在这一节的当中,最核心的内容就两点: 学会创建自己的项目; 学会创建板级支持包; STARTUP :放置启动文件 STM32F4xx_StdPeriph_Driver 和CMSIS :放置库文件,不需要改动 DOC :放置说明文件 USER :放置用户创建或要进行改动的文件 bsp_led.h /** ****************************************************************************** * @file bsp_led.h * @author Waao * @version V1.0
[单片机]