CAN2无法发送和接收数据问题重要原因

这篇具有很好参考价值的文章主要介绍了CAN2无法发送和接收数据问题重要原因。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、CAN2无法发送数据

        在调试CAN2总线收发过程中,官方给的代码例程是是CAN1的,根据CAN1的直接转换为CAN2,是不能正常收发的。单独使用CAN2的时候,在确保硬件连接正常情况下,必须先要打开CAN1的时钟,再打开CAN2时钟,顺序不能反。

二、CAN2无法接收数据

        CAN_Filter的0-14是对应CAN1用的,15-27是对应CAN2用的。如果配置错了,CAN接收就不成功。

比如CAN2需要进行如下配置才能接收成功:

    /*HAL库*/

sFilterConfig.FilterBank = 15; /* 过滤器15 */

    /*STD库*/

CAN_FilterInitStructure.CAN_FilterNumber=15; /* 过滤器15 */

三、在使用正点原子f407ZG时,打开CAN中断,可能会报错,可以这样修改:

原来的代码

#if CAN_RX0_INT_ENABLE

    /* 使用中断接收 */
    __HAL_CAN_ENABLE_IT(&g_canx_handler, CAN_IT_RX_FIFO0_MSG_PENDING); /* FIFO0消息挂号中断允许 */
    HAL_NVIC_EnableIRQ(USB_LP_CAN2_RX0_IRQn);                          /* 使能CAN中断 */
    HAL_NVIC_SetPriority(USB_LP_CAN2_RX0_IRQn, 1, 0);                  /* 抢占优先级1,子优先级0 */
#endif
void USB_LP_CAN2_RX0_IRQHandler(void)
{
    printf("Interrupt triggering\n");
}

修改后的代码

#if CAN_RX0_INT_ENABLE

    /* 使用中断接收 */
    __HAL_CAN_ENABLE_IT(&g_canx_handler, CAN_IT_RX_FIFO0_MSG_PENDING); /* FIFO0消息挂号中断允许 */
    HAL_NVIC_EnableIRQ(CAN2_RX0_IRQn);                                 /* 使能CAN中断 */
    HAL_NVIC_SetPriority(CAN2_RX0_IRQn, 1, 0);                         /* 抢占优先级1,子优先级0 */
#endif
void CAN2_RX0_IRQHandler(void)
{
    printf("Interrupt triggering\n");
}

四、还可能会报很多未定义的

比如下图:

can无法接收,单片机

 只需改成下图就行,对应的.h文件也改一下就可以了(至于为什么之前的被屏蔽了,我也不知道,有大神的话可以评论区探讨一下)

can无法接收,单片机文章来源地址https://www.toymoban.com/news/detail-731720.html

到了这里,关于CAN2无法发送和接收数据问题重要原因的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA Verilog 控制CAN接收发送数据帧(标准/扩展),遥控帧(标准/扩展)

    使用Verilog接收发送,CAN数据帧和远程帧,由于条件有限,并没有实际下载到办卡上验证,只做了仿真验证,后续准确性验证后再行修改。 (1)标准数据帧: (2)扩展数据帧: (3)标准遥控帧 与数据帧的区别就是没有数据字段; (4)扩展遥控帧 系统时钟为100Mhz,CAN通信频

    2024年02月16日
    浏览(31)
  • Stm32f103之串口发送数据,只接收到00的原因

    1、时钟选择的对不对, 2、GPIO口的TX引脚应该设置为“复用推挽输出” 3、中断初始化函数也不可加   4、硬件方面RXT、TXD电路接反。一直出现00的时候就要怀疑是不是线接反了。 总结:大概率是代码的问题一定要仔细检查

    2024年02月11日
    浏览(48)
  • Kvaser Leaf light HS v2 | 如何使用Excel发送和接收CAN报文数据

    从1980年代,Kvaser就开始CAN产品的研发,在相关产品开发领域有近40多年的经验,对CAN和相关总线技术有着非常深入的研究。我们将分享一些有趣的发现和一些特定情况的技术处理,欢迎关注❤️广州智维电子科技有限公司❤️! 所有人的电脑上都有Microsoft Office,平时我们用

    2024年02月08日
    浏览(32)
  • 【项目典型案例】-1-如何加快接收的CAN信号处理能力,提高发送CAN信号的响应

    点击返回「《Autosar_BSW高阶配置》总目录」 案例背景( 共 5 页精讲 ): 在实际的项目当中,有时遇到这样一个问题: 当 ECU 接收到一个 CAN 信号 A ,经过 软件 APP 层

    2023年04月25日
    浏览(35)
  • ARM---CAN2.0B读取 汽车BMS报文

    Qt CAN编程1- CAN总线整体介绍 - 简书 STM32---CAN2.0B读取新能源汽车BMS报文-CSDN博客 CAN通信标准帧和扩展帧介绍_can扩展帧-CSDN博客 【精选】详解CAN 2.0协议_can2.0-CSDN博客 QT实现CAN通信_五个板栗的技术博客_51CTO博客 linux CAN通讯基于Qt代码编写_pf_can-CSDN博客 QT 新手小白USBCAN 学习_qt ca

    2024年01月21日
    浏览(31)
  • Unity解决Udp客户端无法接收数据的问题

    在我之前做过的项目中,其中不少涉及Udp客户端的项目。在这些项目中,一般只需要实现客户端向服务器端发送数据的功能就可以了,一般都不用接收服务器端发送的数据,但是也有同学使用了我分享的udp客户端插件,说是接收不到服务器端发送的数据。我也一直没时间修改

    2024年01月17日
    浏览(41)
  • TCP/IP UDP广播无法发送或接收

    在看《TCP/IP 网络编程》这本书的时候,看到广播那一节,跟着书上写代码,怎么写都不行,广播就是没法发送/接收,发送端一直在发送数据,接收端就是没有反应。 对了好几遍源码,没有问题。实在是愁人。 最后查了很多资料,确定是网卡的问题。 现在的计算机都是多网

    2024年02月04日
    浏览(32)
  • 关于STM32用DMA传输UART空闲中断中接收的数据时无法接收数据问题以及解决办法

             串口1相关的设置及printf函数的使用,这里没放,建议先实现串口打印功能 可以参考:使用STM32 CUBE IDE配置STM32F7 用DMA传输多通道ADC数据_stm32cubeide 配置adc_一只小白啊的博客-CSDN博客         普通模式和循环模式的区别在于,普通模式下,DMA只会接收一次数据,

    2024年02月05日
    浏览(45)
  • STM32 HAL库 CAN双机通信接收无法进入中断、中断没有反应的解决方法

    在调试HAL库下的CAN双机(双F103ZET6)通信时,阻塞轮询接收完全正常,但是中断接收没有反应。翻看了GL的烧脑之路总结(一):Cubemx创建CAN通信工程,无法进入CAN中断的原因这篇文章以后,核实自己的硬件电路没有问题,于是对自己的工程文件进行整理,把 ①HAL_CAN_ConfigFi

    2024年02月04日
    浏览(45)
  • 关于STM32使用HAL_UART_Receive()无法接收数据的问题

    一、问题发现         在项目中我想通过阻塞的方式接收一段来自串口的数据,于是使用了HAL_UART_Receive函数,但跑起来发现一直超时接收不到。网上使劲搜但没搜到啥有用的结果,那只能自己捣鼓了。一开始怀疑是硬件的问题,于是用示波器直接连到对应的rx脚上,发现数据

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包