編輯語:
芯片開放社區(qū)(OCC)面向廣大開發(fā)者推出應(yīng)用實(shí)戰(zhàn)系列內(nèi)容,通過分享開發(fā)者實(shí)戰(zhàn)開發(fā)案例,總結(jié)應(yīng)用開發(fā)經(jīng)驗(yàn),梳理開發(fā)中的常見問題及解決方案,為后續(xù)參與的開發(fā)者提供更多參考與借鑒。
本文是關(guān)于開發(fā)者 zhanghui基于BL606P-DVK開發(fā)板實(shí)戰(zhàn)開發(fā)的系列文章中的第五篇,主要介紹了CAN擴(kuò)展模塊收發(fā)測(cè)試,后面還會(huì)持續(xù)更新社區(qū)開發(fā)者的測(cè)評(píng)內(nèi)容,敬請(qǐng)期待!
本計(jì)劃是使用這款開發(fā)板來播放CAN通信控制的語音播放功能的,對(duì)語音這塊還不太會(huì)用,下面測(cè)試下擴(kuò)展CAN通信模塊收發(fā)測(cè)試功能。
01硬件部分
1.1 使用到了硬件上的LCD接口
1.2 外擴(kuò)CAN模塊部分
1.3 硬件連接圖
02程序部分
2.1 端口初始化部分
gpio_dev_t gpio_2515_so = { GPIO_PIN_24, INPUT_PULL_UP, NULL }; //PIO24/LCD-PWM gpio_dev_t gpio_2515_si = { GPIO_PIN_26, OUTPUT_PUSH_PULL, NULL }; //PIO26/LCD-DIO gpio_dev_t gpio_2515_sck= { GPIO_PIN_27, OUTPUT_PUSH_PULL, NULL }; //PIO27/LCD-CLK gpio_dev_t gpio_2515_cs = { GPIO_PIN_28, OUTPUT_PUSH_PULL, NULL }; //PIO28/LCD-CS gpio_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.h" int 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;i<8;i++) { dispbuf[i]=0; } while(1) { cantx_buf[0]=i; cantx_buf[1]=i+1; cantx_buf[2]=i+2; cantx_buf[3]=i+3; cantx_buf[4]=i; cantx_buf[5]=i+1; cantx_buf[6]=i+2; cantx_buf[7]=i+3; CAN_Send(cantx_buf); printf("can tx data : %02x %02x %02x %02x %02x %02x %02x %02x ",cantx_buf[0],cantx_buf[1],cantx_buf[2],cantx_buf[3],cantx_buf[4],cantx_buf[5],cantx_buf[6],cantx_buf[7]); i++; if(i>250) { 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運(yùn)行結(jié)果
CAN軟件和串口收發(fā)數(shù)據(jù)顯示
審核編輯:湯梓紅
-
lcd
+關(guān)注
關(guān)注
34文章
4438瀏覽量
168384 -
CAN
+關(guān)注
關(guān)注
57文章
2769瀏覽量
464385 -
音視頻
+關(guān)注
關(guān)注
4文章
484瀏覽量
29981 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5121瀏覽量
98195 -
通信模塊
+關(guān)注
關(guān)注
2文章
150瀏覽量
33148
原文標(biāo)題:應(yīng)用速遞 | 博流BL606P音視頻開發(fā)板:(5)CAN擴(kuò)展模塊收發(fā)測(cè)試
文章出處:【微信號(hào):芯片開放社區(qū),微信公眾號(hào):芯片開放社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論