【英飞凌CYW20829测评】-05-总线CAN FD收发

CYW20829最难得的是搭载了CAN FD这一帖开始接触学习CANFD,CANFD和CANZ最大的区别就是最高速率不同,CAN最高速率是1Mbps,CANFD最高速率是8Mbps。

开发板上没有CAN收发芯片,需要外接一个CAN收发芯片,以前的开发板上有CAN收发器,型号是SN65HVD230,芯片电源3.3V,就接到这个芯片上试一试收发吧。
 



 


 



CAN收发器芯片3.3V电源从开发板上引出来,
 



CAN收发芯片TX\RX接到开发板上的P51\P50
 



硬件已经接完,下面开始做软件。
 



建立一个工程,工程名字就叫CAN_FD
 



创建完后MAIN函数上可以看到系统初始化
 



串口配置
 



串口打印
 



CAN中断配置
 



LED配置
 



按键配置
 



CAN配置,速率为500Khz
 



 



 



一直检测有没有按下按键,按下按键就发一帧CAN数据出去。
 



 



CAN接受数据中断函数,接收到数据串口打印出来
 



连上USBCAN采集器
 



打开USBCAN监督查看CAN数据,打开串口调试软件看串口数据,按下开发板的按键,

按下按键,串口打印发送出错
 



USB采集也没有采集到CAN数据,确实是没发出来数据
 



测试接收功能,通过CAN采集器上位机发送ID为1 数据为0 1 2 3 4 5 6 7过去给开发板。
 



经过测试,CAN发送测试功能失败,CAN接收功能正常,收到ID为1,数据为0 1 2 3 4 5 6 7
 



3.3V CAN收发器SN65HVD230发送功能失败,接收功能正常,又换了一个5V供电的CAN收发器1040,情况一样,发送功能失败,接收功能正常,哪位大佬知道原因,麻烦评论区告知一声,谢谢!

今天看到一位大神CAN收发成功了,我得找找原因呀,找找资料。。。
我想我找到发CAN数据失败的原因了,我手里的USBCAN采集器不支持CAN FD,USBCAN采集器这家公司有支持CAN FD的分析仪,我手里的不支持CAN FD.
还有SN65HVD230、TJ1040都不支持CAN FD,TJ1057支持CAN FD,想要测试CAN FD,看来得换芯片了。
 


---------------------
作者:zhoushangshi
链接:https://bbs.21ic.com/icview-3386728-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。 

### 英飞凌 CAN 示例程序 对于希望基于英飞凌微控制器单元 (MCU) 开发 CAN 应用的开发者而言,官方提供了丰富的资源和支持工具。具体到 CAN 接口的应用开发,可以通过访问英飞凌官方网站获取相应的示例代码和文档支持。 #### 获取 CAN 示例代码的方法 为了获得适用于特定系列 MCU 的 CAN 示例代码,建议按照如下方式操作: - 访问 [Infineon Developer Center](https://www.infineon.com/cms/en/design-support/tools/software/) 并登录账户。 - 使用 Infineon Developer Center Launcher 安装所需的软件包[^3]。 - 寻找目标 MCU 系列对应的 SDK 或者专用开发套件,这些通常会包含完整的外设驱动库以及多个实用的例子工程,其中包括 CAN 协议栈实现及测试案例。 下面是一个简单的 CAN 发送接收函数模板,这代表了一种典型的应用场景,在实际项目中可以根据需求调整配置参数以适配具体的硬件平台: ```c #include "CanIf.h" void CanTxExample(void){ /* Prepare message to be sent */ PduInfoType TxPdu; memset(&TxPdu, 0, sizeof(TxPdu)); TxPdu.SduDataPtr = &canMessageBuffer; // Pointer to data buffer TxPdu.Length = MESSAGE_LENGTH; /* Call the transmit function of the CAN driver */ CanIf_Transmit(CAN_CHANNEL_1, &TxPdu); } void CanRxCallback(PduIdType RxPduId, const PduInfoType* PduInfo){ /* Process received messages here */ } ``` 此段伪代码展示了如何利用 `CanIf` 层 API 实现基本的数据帧传输过程,并定义了一个回调函数用于处理接收到的信息。需要注意的是,真实环境中还需要考虑更多的细节设置,比如波特率初始化、过滤器配置等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值