最近在开发S32K144的CAN/LIN模块,调试的时候断断续续遇到不少问题,在这里记录下。

调试CAN/LIN收发过程中出现的问题

1 现象

1.1 CAN

CANoe一直报Tx stuff error/overload frames,如下图所示。

1.2 LIN

LIN报文的时隙一直与调度表中设定的报文时隙对不上,调度表中报文A设定10ms的时隙,A的报文实际发送需要7ms,按照调度表定义A报文发完之后TX需要空闲3ms,等到10ms完全过去后下一个报文才会开始发送。

2 解决过程

2.1 CAN

刚开始测试CAN的时候,S32K144作为接收端,CANoe作为发送端,用的是S32DS自带的demo例程。CANoe报出来的错误码stuff error一直不知道怎么解决,百度也没法找到好的办法。所以打算换一下,用S32K144发CAN报文,CANoe来接收,这样对程序的要求不高,不需要对接收mb进行配置。
调换收发端之后,再次测试发现CANoe仍然收不到报文,就开始一步一步测试。
首先检查硬件,
S32K144、TJA1042的供电没问题,TJA1042的CANH/L引脚至CANoe的7/2引脚连接也OK;
然后是软件配置,
S32DS里引脚配置,TJA1042的配置引脚输出信号,都OK
都没问题,接下来只能用最原始的方法,测试TJA1042的TX引脚,观察波形是否正常。波形见下图。

100us波形图

20us波形图

10us波形图

2us波形图

到2us波形图里就可以看出波形确实有问题了,程序里设置的波特率是500kb/s,那么每个bit所占的时间长度为2us,即每个完整的高/低电平须占完整的一格,从波形图中可以看到,实际上一个高/低电平占了不到一格,3个bit占用两个2us多一点点,到这里就想到了应该是CAN模块的时钟配置有问题。打开pe看了下,果然是有问题。CAN模块使用的时钟源是晶振时钟,也就是外部时钟源,
我们的板子上的晶振是12MHz,而demo里默认的晶振时钟是8MHz,所以CAN模块频率由8M/16=500kb升到了12M/16=750k,因此一个bit占用4/3us,3个bit占用4us,这个结果也与波形能对应起来。
知道问题之后,立马修改了芯片的晶振时钟为12MHz,CAN的收发就OK了

2.2 LIN

LIN的现象与CAN类似,LIN报文可以发出来,也可以用示波器读到,但是时隙间隔不对。由于LIN模块配置波特率时不需要配置时钟模块,所以在出现问题时没有考虑排查时钟。
问题的排查过程与CAN类似,首先是硬件;
S32K144、TJA1021的供电没问题,
然后是软件配置,
S32DS里引脚配置,TJA1021的配置引脚输出信号,都OK;
接下来只能像CAN一样测TX引脚的波形,观察异常。程序里设置的报文时隙为50ms,但是测下来时隙只有36ms左右
然后,调整时隙至40ms/20ms,发现实测波形的时隙也相应下降到28ms/15ms,发现设定时隙与实测波形时隙之间接近1.5倍的关系,猜测应该是时钟的关系。
LIN模块的波特率是可以由用户自行配置的,时钟源没有开放,猜测是使用了内部时钟,这里就不管了。
LIN模块里跟时钟相关的模块就是定时器,定时器用于基时的实现,基时设置是5ms,定时器中断任务也是5ms进一次,在中断里进行时间检测,若上一帧报文的时隙到了,那么就发下一帧。
打开定时器,发现时钟果然不对劲,PCC configured clock是由外部晶振分频得到的,就带来了跟CAN同样的问题,外部晶振是12MHz,但是软件里默认是8MHz,因此实际的定时器比预想的快1.5倍,那么实际的报文时隙比设置里的时隙慢1.5倍也是正常的。到这里,修改时钟源为内部的SIRC DIV2 clock,再尝试发LIN报文,时序果然没有问题了。

3 总结

调试是一个很讲究的工作,出了问题需要考虑软/硬件多方面的因素。
通讯模块有问题,硬件须考虑芯片供电、芯片有没有贴反、收发器和调试器的接线等因素,软件须考虑时钟、引脚输出/输入配置、收发器工作模式配置等因素,这些保证没问题之后可以通过示波器观察MCU的TXD引脚,通过波形判断发出的数据是否正常。

S32K144调试记录(一)相关推荐

  1. S32K144调试记录(二)

    最近在调试一个新板子,我负责板子上通讯模块程序的编写和调试,调试的时候断断续续遇到不少问题,在这里记录下. 调试CAN收发过程中遇到的问题 1 现象 接上篇CAN/LIN的收发程序调通了之后,紧接着整 ...

  2. S32DS使用Jlink下载S32K144程序记录

    一,S32DS配置. 参考文章 在S32DS中使用J-Link调试S32K144开发板_大橙员的博客-CSDN博客 新建工程 以自带例程"S32K144_Project_ADC"为 ...

  3. ROS上同时预览depth,IR,RGB 调试记录

    ROS上同时预览depth,IR,RGB 调试记录 用rviz同时显示RGB,IR,DEPTH(验证设备:astraprosm,canglong2,deeyea) 1.编译libuvc库 cd lib ...

  4. ML之回归预测:利用十(xgboost,10-1)种机器学习算法对无人驾驶汽车系统参数(2017年的data,18+2)进行回归预测值VS真实值——bug调试记录

    ML之回归预测:利用十(xgboost,10-1)种机器学习算法对无人驾驶汽车系统参数(2017年的data,18+2)进行回归预测值VS真实值--bug调试记录 目录 输出结果 1.增加XGBR算法 ...

  5. [Deepin - Pycharm调试记录] Pyinstaller索引系统库问题

    Deepin - Pycharm调试记录 - Pyinstaller索引不到系统库 现象 在Pycharm的Terminal中执行Pyinstaller指令时候遇到如下报错提示 OSError: Py ...

  6. RAISR-master:google图像新压缩技术RAISR的测试代码调试记录(Python实现,没接触过python的小白,内含pip install解决方案)

    RAISR-master:google图像新压缩技术RAISR的测试代码调试记录(Python实现,没接触过python的小白,内含pip install解决方案) 参考文章: (1)RAISR-ma ...

  7. SX1278 FSK 调试记录

    SX1278 FSK 调试记录 先挖个sx1278 FSK的坑慢慢填 手中有两个SX1278模组 是安信可的产品 采用主从模式 SPI访问 MCU是STM32F107 数据格式 说明收据接收的第一步就 ...

  8. 松下MINAS-A6伺服电机调试记录

    松下MINAS-A6伺服电机调试记录 因项目需求,进行松下MINAS-A6伺服电机调试 文章目录 松下MINAS-A6伺服电机调试记录 概述 一.手册数据 二.设备使用 1.驱动器及电机连接 2.设备 ...

  9. Xilinx AXI Crossbar相关调试记录

    Xilinx AXI Crossbar相关调试记录 本文记录在使用Xilinx AXI Crossbar IPcore现象 ** AXI Crossbar IPcore设置如下** 使用AXI Cro ...

最新文章

  1. Wine 1.0 RC2
  2. php post 渲染数据,php 程序内部post数据实现方法
  3. python 函数可以作为容器对象的元素_python第十二天, 三元表达式, 函数对象,名称空间与作用域,函数的嵌套定义...
  4. 怎么在mysql创建数据库怎么加入学号_数据库怎么创建学生信息表
  5. 泛型字典 0104 c# 1613648530
  6. (28)System Verilog进程间同步(事件event)
  7. hdu3094 A tree game
  8. Maven学习总结(20)——Maven pom.xml配置再体会
  9. 每周荐书:Kotlin、分布式、Keras(评论送书)
  10. 25. Element nextSibling 属性
  11. gis投影中未定义的地理转换_PhotoScan中经纬度转换为投影坐标快捷方法
  12. Android计算器效果截图,Android复杂计算器实现
  13. 全球及中国在线教育行业发展态势与营利模式咨询报告2022版
  14. MATLAB最小矩形法边界法,最小外接矩形法.PPT
  15. 假定我们要建立一个学术论文数据库,存储如下信息: •学术期刊有期刊编号、期刊名、发行单位; •作者有作者编号、作者姓名、电子邮件; •论文有论文编号、论文标题、摘要、正文; •每篇论文只被一个
  16. 恢复未保存的word
  17. ValueError: The field admin.LogEntry.user was declared with a lazy reference to ‘MyApp.sysusers‘
  18. 桌面文件夹不见了怎么恢复?4招教你找回消失的文件夹
  19. 关于瞎报Access violation writing location异常的瞎解决方法
  20. python-大智慧price_oscillator指标

热门文章

  1. Swing交通罚单管理系统java车辆违章缴费金额查询交警信息jsp源代码Maven数据库mysql
  2. https证书申请流程和简介
  3. 徐磊语法 6 7 时态的正确定义
  4. Excel如何批量修改工作表名称
  5. 关于指针所占的字节数
  6. 上周,裤衩都亏掉了...
  7. 分治算法--L型骨牌棋盘覆盖
  8. python自动化测试面试题None is ==详解
  9. MySQL 删除数据后自增长主键id依旧占用问题
  10. 2012系分真题案例分析 软件项目管理 工期管理