前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于STM32F46xxx的J1939程序开发

基于STM32F46xxx的J1939程序开发

作者头像
用户1605515
发布2018-11-23 11:11:03
1.5K2
发布2018-11-23 11:11:03
举报
文章被收录于专栏:嵌入式程序猿嵌入式程序猿

1

本篇笔记主要介绍,如何在STM32F446XXX系列上实现SAEJ1939协议,基于STM32F446ZENUCLEO开发板,使用IAR作为软件开发环境。

1,熟悉SAE J1939标准,熟悉ST STM32Cube_FW_F4_V1.21.0结构和接口以及例程

2,装有IAR的电脑

3,带有CAN 收发器的板子,因为开发板上的只有CAN接口,不带收发器,我们采用外接引入收发器挂在开发板上,收发器芯片使用的是SN65HVD232D

2

ST官方提供Cube帮助工程师快速开发产品原型,类似于软件SDK,包含所有外设驱动,还有例程,之前多次讲过在NXP平台芯片上做J1939协议栈,如果熟悉J1939的话会很容易移植到ST芯片上。

我们以开发包的下面路径的例程为基础来搭建工程,这是一个基于Timer的例程,我们构建一个1ms时基来做为系统运行的基础。

3

工程实现,

因为要用到CAN驱动,所以我们添加Hdl_CAN.h和Hdl_CAN.h来配置和实现一些函数,关于CAN例程和如何初始化可以参考下面路径的这个回环例程。

在建好的工程里在void HAL_CAN_MspInit(CAN_HandleTypeDef* hcan)函数中初始化CAN时钟,管脚,使能发送,接收中断,等其他错误检测中断。

在我们建立的Hdl_CAN.c中实现CAN的配置和初始化,主要有模式,波特率参数,滤波参数,启动CAN外设等。

实现收发的回调函数

因为STM32F446的CAN外设有两个接收FIFO,每个深度3级,发送有3个mailbox,所以软件还要考虑FIFO的数据处理。完成后可以先编译测试确保驱动没有问题,包含我们之前曾经多次开发过的J1939的协议栈代码,修改接口参数,主要是修改J1939的发送和接收处理函数内容,

其余修改地方不在赘述,编译无误后,下载到开发板,并正确连接硬件电路,并通过CAN转USB接到电脑,通过CANPro软件进行测试,测试中我就放了一帧,你可以根据自己的需要添加更多内容。

至此我们已经成功在STM32F446上实现了J1939通信。总共给大家介绍过多次有关J1939程序的开发,前后在NXP KV46系列,K64系列,KEA系列等MCU上实现J1939协议栈,今天完成在ST平台上的开发,有相关项目需求的客户欢迎联系,

SAE J1939是在商用车,大型机电设备,发电机,船舶,农机等行业广泛应用的标准协议,目前国内开发人员较少,我们可以为您提供整套产品级方案和源码。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档