编辑语:
芯片开放社区(occ)面向广大开发者推出应用实战系列内容,通过分享开发者实战开发案例,总结应用开发经验,梳理开发中的常见问题及解决方案,为后续参与的开发者提供更多参考与借鉴。
本文是关于开发者 zhanghui 基于bl606p-dvk开发板实战开发的系列文章中的第五篇,主要介绍了can扩展模块收发测试,后面还会持续更新社区开发者的测评内容,敬请期待!
本计划是使用这款开发板来播放can通信控制的语音播放功能的,对语音这块还不太会用,下面测试下扩展can通信模块收发测试功能。
01 硬件部分
1.1 使用到了硬件上的lcd接口
1.2 外扩can模块部分
1.3 硬件连接图
02 程序部分
2.1 端口初始化部分
gpio_dev_t gpio_2515_so = { gpio_pin_24, input_pull_up, null }; //pio24/lcd-pwmgpio_dev_t gpio_2515_si = { gpio_pin_26, output_push_pull, null }; //pio26/lcd-diogpio_dev_t gpio_2515_sck= { gpio_pin_27, output_push_pull, null }; //pio27/lcd-clkgpio_dev_t gpio_2515_cs = { gpio_pin_28, output_push_pull, null }; //pio28/lcd-csgpio_dev_t gpio_2515_int = { gpio_pin_25, irq_mode, null }; //pio25#define mcp2515_clk_l() hal_gpio_output_low(&gpio_2515_sck)#define mcp2515_clk_h() hal_gpio_output_high(&gpio_2515_sck)#define mcp2515_si_l() hal_gpio_output_low(&gpio_2515_si )#define mcp2515_si_h() hal_gpio_output_high(&gpio_2515_si )#define mcp2515_cs_l() hal_gpio_output_low(&gpio_2515_cs )#define mcp2515_cs_h() hal_gpio_output_high(&gpio_2515_cs )csi_pin_set_mux( gpio_pin_24, pin_func_gpio);csi_pin_set_mux( gpio_pin_25, pin_func_gpio);csi_pin_set_mux( gpio_pin_26, pin_func_gpio);csi_pin_set_mux( gpio_pin_27, pin_func_gpio);csi_pin_set_mux( gpio_pin_28, pin_func_gpio);hal_gpio_init(&gpio_2515_so);hal_gpio_init(&gpio_2515_si);hal_gpio_init(&gpio_2515_sck);hal_gpio_init(&gpio_2515_cs);hal_gpio_init(&gpio_2515_int);hal_gpio_output_low(&gpio_2515_si);hal_gpio_output_low(&gpio_2515_sck);hal_gpio_output_low(&gpio_2515_cs);hal_gpio_enable_irq(&gpio_2515_int, irq_trigger_falling_edge, can_eint, null);
2.2 main.c
#include #include #include #include app_main.h#include #include led.h#include tm1638.h#include mcp2515.hint main(int argc, char *argv[]){int i=0;uint8_t dispbuf[8];uint32_t cnt=0;uint8_t cantx_buf[8]; board_yoc_init();init_led();init_tm1638();init_mcp2515(); printf(app start core clock %d........, soc_get_cur_cpu_freq());disp_log();aos_msleep(2000); //codec_output_init(); //codec_input_init(); //codec_loop_init();for(i=0;i250){i=0;}set_ledr();clr_ledg();clr_ledb();aos_msleep(100);clr_ledr();set_ledg();clr_ledb();aos_msleep(100);clr_ledr();clr_ledg();set_ledb();aos_msleep(100);clr_ledr();clr_ledg();clr_ledb();aos_msleep(100);if(cnt>999){cnt=0;}cnt++;dispbuf[4]=cnt/1000;dispbuf[5]=(cnt%1000)/100;dispbuf[6]=((cnt%1000)%100)/10;dispbuf[7]=((cnt%1000)%100)%10;disp_led(dispbuf);} return 0;}
2.3 can接收部分程序
void can_eint(void *args){uint8_t rx_sta;rx_sta=can_readintf(); if(rx_sta&0x01){can_setintf(0x00);can_recrxb0(canrx_buf);printf(can rx data : %02x %02x %02x %02x %02x %02x %02x %02x,canrx_buf[0],canrx_buf[1],canrx_buf[2],canrx_buf[3],canrx_buf[4],canrx_buf[5],canrx_buf[6],canrx_buf[7]);}}
03 运行结果
can软件和串口收发数据显示
Jetpack Compose基础知识科普
都要干缤智?丰田、日产推小型SUV上演日系三国杀
关于农药残留检测仪工控一体机的解决方案
中国电信监事会原主席邵春堡:从宏观视角认识6G和大模型的研发
轮毂电机的结构、控制技术及应用前景
基于博流BL606P音视频开发板的CAN扩展模块收发测试
中国移动正式公布2019年至2020年基站天线集采中标结果
用NanDigits GOF来做DFT DRC检查的介绍和举例
一文看懂硬件环境和软件环境是什么
1nm晶体管诞生 计算技术界迎来重大突破
175°C室温下的高温数据采集参考设计
超声波封尾机是什么,它的应用特点都有哪些
Acrel-2000E配电室综合监控系统设计方案
老牌家电巨头发起设立20亿半导体产业股权投资基金
什么是5G技术?这篇文章讲得很详细
请问PFS122B是如何利用内部参考电压反推VDD的?
ZiKKO(即刻)AK2800移动电池携带方便仅售450元
什么是超级电容器?超级电容有什么特殊的性能?
诺基亚6真机上手评测:低配高价,你怎么看?
苹果ios 16将新增交互方式,不支持3GB运行内存以下的机型