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切换写入地址
这是填满邮箱三次并停止。 None 已读。
我试过直接用一根跳线从 Crx 连接到 Ctx,但没有任何变化。
我也试过用STM32给Teensy(Teensy控制我的汽车LED屏幕它也能读),但失败了。
请帮忙?
对我来说,听起来你好像忘了驱动 CAN 收发器的“RS”引脚。这在数据表中有点误导,但它不仅是“斜率”控制,而且还将 Transciever 设置为睡眠状态。我建议使用 10k 斜率控制电阻,除非另有需要,如下所示:Schematics
是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切换写入地址 这是填满邮箱三次并停止。 None 已读。
我试过直接用一根跳线从 Crx 连接到 Ctx,但没有任何变化。
我也试过用STM32给Teensy(Teensy控制我的汽车LED屏幕它也能读),但失败了。
请帮忙?
对我来说,听起来你好像忘了驱动 CAN 收发器的“RS”引脚。这在数据表中有点误导,但它不仅是“斜率”控制,而且还将 Transciever 设置为睡眠状态。我建议使用 10k 斜率控制电阻,除非另有需要,如下所示:Schematics