本帖最后由 6841709 于 2019-12-29 23:58 编辑
ES32F0654 是东软推出的第一款带CAN外设的MCU,申请开发板的主要原因也是看中了这点。 开发板应该也是为了主推这个功能,特意将CAN接口独立出来,方便接CAN收发器。 要测试这个功能,需要有一个5V的CAN收发器,比如常见的TJA1050,和一个CAN分析仪。
下面推荐一下,我使用的收发器和分析仪的购买链接:https://nirenelec.taobao.com
如果使用过STM32的CAN控制器,那么再使用这款的话,是很容易上手的,感觉使用方式都差不多。
CAN波特率的计算方式也一样,如下:
具体计算方式为:PCLK/(psc)/((sjw+1)+(seg1+1)+(seg2+1))
系统时钟配置为48M时,如下配置CAN波特率=500K
/* Initialize CAN */
h_can.perh = CAN0;
h_can.rx_msg = &rx_msg;
h_can.init.psc = 8;
h_can.init.mode = CAN_MODE_NORMAL;
h_can.init.sjw = CAN_SJW_1;
h_can.init.seg1 = CAN_SEG1_7;
h_can.init.seg2 = CAN_SEG2_4;
h_can.init.ttcm = DISABLE;
h_can.init.abom = DISABLE;
h_can.init.awk = DISABLE;
h_can.init.artx = ENABLE;
h_can.init.rfom = DISABLE;
h_can.init.txmp = DISABLE;
h_can.tx_cplt_cbk = can_send_complete;
h_can.rx_cplt_cbk = can_recv_complete;
h_can.error_cbk = can_error;
ald_can_init(&h_can);
48M/(8)/((0+1)+(6+1)+(3+1)) =500K
例子程序采用非中断发送CAN报文,中断方式接收CAN报文。具体程序,查看附件例子
|