想问一些关于CH32V307 CAN方面的中断和速率设置问题

想问一些关于CAN方面的问题,CH32V307主频144M,CAN1和CAN2都需要使用,

问题1:使用中断问题,CAN1有例程

void USB_LP_CAN1_RX0_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));

void USB_LP_CAN1_RX0_IRQHandler(void)

{}

void USB_HP_CAN1_TX_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));

void USB_HP_CAN1_TX_IRQHandler(void)

{}

CAN2的中断函数是否是?

void CAN2_TX_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));

void CAN2_TX_IRQHandler(void)

{

}

void CAN2_RX1_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast"))); 

void CAN2_RX1_IRQHandler(void)

{

}

问题2:有没有CAN的波特率计算器?

typedef enum {

 CAN_5KBPS,

 CAN_10KBPS,

 CAN_20KBPS,

 CAN_31K25BPS,

 CAN_33KBPS,

 CAN_40KBPS,

 CAN_50KBPS,

 CAN_80KBPS,

 CAN_83K3BPS,

 CAN_95KBPS,

 CAN_100KBPS,

 CAN_125KBPS,

 CAN_200KBPS,

 CAN_250KBPS,

 CAN_500KBPS,

 CAN_1000KBPS

} CAN_SPEED;

想计算这些速率的配置数据,希望采样点位置在85%-87.5% 误差为0。


您好,关于你的问题:

1、关于can2的中断函数,可以参考启动文件,如下图1:

image.png

图1

2、关于CAN波特率的计算,可以参考下帖链接:

https://www.cnblogs.com/wchmcu/p/17546797.html

 


请问例程CH32V307EVT6\EVT\EXAM\CAN\Time-triggered中如此配置

/* Bps = 500Kbps */

CAN_Mode_Init( CAN_SJW_1tq, CAN_BS2_5tq, CAN_BS1_6tq, 12, CAN_Mode_Normal );

采样点是不是58.3%?



您好,是的,CAN采样点的计算公式应该为:采样点=(1+CAN_BS1)/(1+CAN_BS1+CAN_BS2),可根据自己需要的采样点配置不同的BS1和BS2即可


只有登录才能回复,可以选择微信账号登录