本帖最后由 陌尘 于 2018-12-17 18:50 编辑
我们做了个板子,主控用的STM32F103C8T6,然后把程序下进去之后与阿波罗板用CAN通信,但是通信不通....
然后我把程序下到精英板上,就可以和阿波罗板通信成功...
波特率配的是500Kbps,CAN用的原子老师的库,程序如下:
[mw_shl_code=c,true]
#include "sys.h"
#include "delay.h"
#include "can.h"
#include "usart.h"
u8 CAN_RX_BUF[8];
u8 CAN_TX_BUF[8] = {1,2,3,4,5,6,7,8};
int main()
{
SystemInit();
delay_init();
uart_init(115200);
if(CAN_Mode_Init(CAN_SJW_1tq,CAN_BS2_8tq,CAN_BS1_9tq,4,CAN_Mode_Normal))//500kbps
{
printf("CAN初始化失败
");
}
printf("初始化完成
");
while(1)
{
if(Can_Send_Msg(CAN_TX_BUF,8))
{
printf("发送失败
");
}else printf("发送成功
");
if(Can_Receive_Msg(CAN_RX_BUF))
{
printf("接收到数据
");
}
delay_ms(100);
for(int i = 0;i<8;i++)
{
CAN_TX_BUF
++;
}
}
}
[/mw_shl_code]
关于CAN的电路部分如下:
其中boot0和外部晶振的问题已经找到了,但是修复之后还是不通...请各位分析一下,问题在哪里,感激不尽...
也不行啊...
原子老师,我把120欧的电阻给拆了就可以了,这是为什么?
断 电 测下 CAN 2线的 电阻,是不是 在 60欧左右
推荐选用2X2X0.5mm^2多股屏蔽双绞线(4芯对绞)(大于0.5mm^2 的线更好,见上表),红黑供电,在通信线中间抽出的的接线处,强烈建议信号线及屏蔽层不能中间剪断,接好线后,用热缩套管及绝缘胶布做好隔离、绝缘保护工作,通信线2端并接 120欧的终端电阻,屏蔽层 要求 单点接地,即屏蔽层 只能在一端接地。
有空参考下这个 页面:
http://www.openedv.com/forum.php ... d=283040&extra=
一周热门 更多>