STM32
直播中

吴湛

9年用户 932经验值
擅长:可编程逻辑
私信 关注
[问答]

stm32f105 + TJA1041只能接收不能发送数据怎么解决?

环境 STM32f105rb,2路CAN【TJA1041】,CAN1和CAN2,目前CAN1可以正常的接收和发送,CAN2是只能接收不能发送。
目前发现的现象:CAN2的TXD和MCU连接,电压是2.93v,这个电压应该是不正常的。 正常的电压是3.5v(CAN1的TXD就是3.5v)
之前都是成熟的产品,最近要移植FreeRTOS代码导致。

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);  //使能CAN1总线时钟
#ifdef _CAN2
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);  //使能CAN2总线时钟
#endif

通过断点,CAN1的总线时钟使能后TXD电压变成了3.5v就正常。CAN2的总线时钟使能后TXD电压就没有变成3.5v。看了寄存器,
RCC_APB1ENR 0x06000000,CAN1和CAN2的都已经使能了。

回帖(1)

丁冬芹

2024-4-12 16:11:13
这个问题可能与两个原因相关:

1. 引脚电压不正常:您已经发现了CAN2的TXD和MCU之间的电压只有2.93V,而不是正常的3.5V。这可能是因为引脚连接存在问题,例如电阻、连接不牢固等。您可以检查引脚连接并确保良好连接。

2. 配置错误:您已经开启了CAN2的总线时钟,但是可能存在配置错误导致无法发送数据。您需要仔细检查CAN2的配置参数,确保它们与CAN1的配置参数相同。主要需要检查的配置包括:波特率设置、过滤器设置、发送邮箱配置等。

如果以上步骤都尝试过且问题仍然存在,那么可能是硬件故障引起的问题。您可以检查硬件电路,例如CAN2的TJA1041芯片或其它相关电路元件,看是否存在损坏或连接问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分