S32K148实现250K转500K波特率的网关

1 篇文章 0 订阅
1 篇文章 0 订阅

首先感谢几位大神的源代码和优秀的文章:

1、阿衰0110

文章和代码:S32K的flexcan组件使用(RxFIFO+中断)

S32K的flexcan组件使用(RxFIFO+中断)_阿衰0110的博客-CSDN博客

2、weifengdq

文章和代码:S32K148----SDK笔记----CAN收发

S32K148----SDK笔记----CAN收发_weifengdq的博客-CSDN博客_s32k148

3、揪住小尾巴

【s32k】s32k14x系列(1)——开发环境搭建_揪住小尾巴的博客-CSDN博客_s32k14

4、起个名字辣么麻烦S32K144之与S32K1xx系列MCU工程移植_起个名字辣么麻烦的博客-CSDN博客

5、魏小C的苦逼日常

J-Link解锁S32K_魏小C的苦逼日常的博客-CSDN博客

6、星叔

JLINK_JTAG S32K 烧录 调试配置

使用JTAG的工具Jflash刷写S32DS生成的HEX文件_星叔的博客-CSDN博客

7、就是我啊12138 

 S32K144从入门到入土(2)时钟选择及其配置方法                   
原文链接:https://blog.csdn.net/qq_51350904/article/details/132556243

8、*balance                     
原文链接:https://blog.csdn.net/balance_c/article/details/122700426

S32k144SDK版本——电源管理模块

感谢上述大神的文章和源代码。

功能:利用单片机的can0和can1两路can,实现不同波特率的2路can的网关功能,can0接收到的所有数据发送到can1,can1接收到的所有数据发送到can0

单片机:s32k148,144pin

环境:s32ds,SDK3.0版本

安装包:S32DS_ARM_Win32_v2.2

烧写器:Jlink V9

总线监测工具:canoe

硬件:破解已有pcb板,can接口芯片用的是TJA1042

具体实现:

1、硬件:需要一张s32k148的单片机电路板,自己画的也行,破解别人的也行,搞清JTAG的TMS、TCLK、TDO、TDI、Rest的排列顺序,因为有些板子的JTAG的接口的PIN脚号和在网上买的Jlink的pin脚号是不一致的,需要手动飞线,将Jlink烧写器的pin脚和手头现有的pcb板子的pin脚对应上,Jlink上面的5v-supply引脚给单片机148供电,只需要将TMS、TCLK、TDO、TDI、GND、5v-supply这6根线连接好就ok了,RESET引脚不用。pcb板子的两路can接到canoe上面,用于监测2路can报文有没有丢帧、负载率等信息。TJA1042的STB引脚,用PTE32的GPIO输出一个低电平,用于让can接口芯片,一直工作在nomal工作状态,不让can休眠。

2、软件:安装S32DS_ARM_Win32_v2.2开发环境,用到PE插件,PE是很强大的,能帮助我们写不少的代码,不再像以前那样从寄存器写起,门槛低,非常友好。安装Jlink驱动程序,会用到Jlink和Jflash两个软件,利用Jlink解锁s32k148,因为我的pcb上的单片机被锁保护了,需要unlock Kinetis进行解锁。之后再修改148的pin脚定义,源代码默认的是176pin,我手头的单片机是144pin。最后配置环境生产HEX文件,用于烧录。之所以用到hex文件,是因为debug一直调不通,总是错误,但是能编辑,就是环境里面的那个小锤子是好用的,索性不用debug功能,直接Jflash烧写hex文件到单片机。烧写到单片机之后,为了方便,烧写后不需要断开Jlink和单片机的连接跳线,只需要将单片机的Rest引脚接GND一下,单片机自己复位,程序就能正常运行,否则在烧录之后,程序是不会自动执行的,给人造成一种程序不好用的假象。在烧录程序之前,需要Jlink V9仿真器接到JTAG的6根线,连接USB到电脑后打开Jlink软件,输入connect,S32K148,JTAG(Default),speed选200,收到一系列反馈信息后,连接成功。再打开Jflash软件,同样设置speed的速度=200,太快的话,会连接不成功。

注意:只需要安装S32DS_ARM_Win32_v2.2这一个软件就够了,不需要安装补丁、升级包、插件之类的,也不需要升级,就能满足大部分的使用需求,否则会出现格式错误的提示框,很烦,而且PE出问题用不了。第二点就是s32ds的在线激活有问题,总是失败,后来采用离线激活就ok了,曲折啊。离线激活首先下载一个request,然后把这个request上传到nxp官网上面,在上面下载一个active的文件到电脑中,然后把这个active文件加载到离线激活的安装步骤里面,就能够正常安装了,由于之前出现过格式错误的提示框,我出于谨慎考虑,安装路径没改,一路下一步,环境终于安装成功。

3、调试:修改大神的源代码,基本能够实现网关的功能,但是丢帧,严重丢帧。250k那路can用canoe的IG发4条10ms的扩展帧,同样500k那路也用canoe的IG发4条10ms的扩展帧,理论上,负载率应该是23%和46%。 500k那路的负载率是23%,250k那路竟然是39%,应该是46%,差了5个点,可见丢帧是非常严重的。我通过时间片轮询的机制调用mailbox8到15这8个发送mailbox,解决了丢帧的问题。源代码只用到maibox8和mailbox9用作报文发送,利用率低,无法满足23%负载率要求,我将2个mailbox扩充到8个mailbox,提高4倍的发送报文的性能,使得发送不会拥堵,造成丢帧的情况。

注意:为了提高can模块的收发性能,利用电源管理模块,强制让单片机工作在HSRUN模式,sys时钟设置为112M,提高了网关的吞吐量,减少丢帧的概率。

4、需要源码的请到我的资源去下载。
链接:https://pan.baidu.com/s/1GclifgXMT8HDHJXcqOHAUw 
提取码:1234

https://download.csdn.net/download/yypencyclopedia3/85760774

flexcan_test_s32k148_144PIN【用作网关实现250k转500k波特率】-单片机文档类资源-CSDN下载

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值