在线时间352 小时
UID2053419
注册时间2014-11-27
NXP金币0
TA的每日心情 | 衰 2016-10-20 09:45 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
版主
  
- 积分
- 2223
- 最后登录
- 2023-11-20
|
今天把超核库的CAN模块移植到KS22中,并调试成功!
原理图,使用的PB18/PB19上的CAN0 模块
程序,超核库是针对K60的,所以他的时钟源是BUS时钟50M,而KS22 总线时钟是60M,所以需要更改波特率的设置参数!
下面是CAN的初始化函数:
- CAN_QuickInit(CAN0_TX_PB18_RX_PB19, kCAN_500K);
-
- /* 设置接收中断 安装回调函数 */
- CAN_CallbackInstall(HW_CAN0, CAN_ISR);
- /* 开启CAN通信中断接收功能,3号邮箱 */
- CAN_ITDMAConfig(HW_CAN0,3, kCAN_IT_RX);
-
- /* 设置 3号邮箱为CAN接收邮箱 */
- CAN_SetRxMB(HW_CAN0, 3, 0x7A8);
复制代码 发送函数
- CAN_WriteData(HW_CAN0, 2, 0x330, (uint8_t *)"CAN TEST", 8);
复制代码 接收函数,接收函数中把接收到消息通过UART打印出来
- void CAN_ISR(void)
- {
- static uint32_t cnt;
- uint8_t buf[8];
- uint8_t len;
- uint32_t id;
- if(CAN_ReadData(HW_CAN0, 3, &id, buf, &len) == 0)
- {
- printf("DataReceived:%d ", cnt++);
- while(len--)
- {
- printf("[%d]:0x%X ", len, buf[len]);
- }
- printf("\r\n");
- }
- }
复制代码 Debug运行!
附上IAR工程!
Demo.rar
(6.09 MB, 下载次数: 44)
|
评分
-
查看全部评分
|