繁体   English   中英

CAN BUS STM32 Nucleo F429ZI CAN 写入失败

[英]CAN BUS STM32 Nucleo F429ZI CAN Write Fail

它是 Veysel 我的板是 STM32 Nucleo F429ZI,我使用 Mbed-os 6.6.0。 我可以从我的汽车 CANBus 数据中读取,但我无法在总线上写入。 我用两个STM32(相同的板)试了一下,我的收发器是SN65HVD230所以我知道我可以在CANBus上阅读,但我不能写。

我试过, https://os.mbed.com/users/WiredHome/notebook/can---getting-started/一个STM32,我试过了

#include "mbed.h"

//Ticker ticker;
DigitalOut led1(LED1);
DigitalOut led2(LED2);
//CAN can1(PD_0, PD_1);
CAN can2(PB_8, PB_9);
DigitalOut led3(LED3);
 
 
char counter = 0;
 
void messageReceivedISR() {
 CANMessage msg;
 if(can2.read(msg)) {
        printf("Message received: %d, from %d\r\n", msg.data[0], msg.id);
        if(msg.id == 1100)
            led2 = !led2;
        if(msg.id == 1102)
            led3 = !led3;     
}
 
   
}
 
int main() {

   
can2.frequency(1000000);
can2.reset();
can2.attach(&messageReceivedISR, CAN::RxIrq);
while(1) {
    if(can2.write(CANMessage(1130, &counter, 1))) {
        printf("loop send()\r\n");
        counter++;
        printf("Message sent: %d\r\n", counter);
        led1 = !led1;
    }
    
   // wait_ms(500);
}
}

我为两个 stm32 切换写入地址这是 3 次填满邮箱并停止。 没有读过。

我曾尝试直接连接从 Crx 到 Ctx 的一根跳线,但没有任何变化。

我还用 STM32 to Teensy 尝试过(Teensy 正在控制我的汽车 LED 屏幕,它也可以读取),但失败了。

请帮忙?

对我来说,听起来你忘了驱动 CAN 收发器的“RS”引脚。 这在数据表中有点误导,但它不仅是“斜率”控制,而且还将 Transciever 设置为睡眠状态。 除非需要,否则我建议使用 10k 斜率控制电阻器,如下所示:原理图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM