娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

USB-CAN收發器

發布者:星光閃耀最新更新時間:2025-03-07 來源: jianshu關鍵字:USB-CAN  收發器  STM32 手機看文章 掃描二維碼
隨時隨地手機看文章

低成本實現USB-CAN收發器

方案:使用UART+CAN實現CAN數據收發

一、器件選擇

1、串口

串口波特率要高,封裝要小,所以最終選擇了CH340N

CH340N特征如下:

  • 串口波特率支持50~2Mbps

  • 支持5V與3.3V串口電平

  • 封裝SOP-8

  • 內置晶振,外圍精簡

2、主控

主控只要求有UART和CAN即可

所以最終選擇了STM32F042F4 其封裝為TSSOP20

3、CAN PHY

選擇了TJA1050

4、電源

電源主要為5V降3.3V,所以選擇AMS1117

二、原理圖

image

三、PCB

image

四、程序

1、庫的選擇

STM32程序編寫主要分兩種形式:庫和寄存器

HAL庫:

到今天,STM32庫的主流為HAL庫,其主要特點為方便移植開發,芯片間兼容性高。但是也有很多缺點:

  • BUG多

  • 運行效率低

標準庫:

HAL庫之前就是標準庫,這個庫雖然軟件功能不多,但是硬件功能BUG少,相對于寄存器編寫已經很好了。

所以最終選擇標準庫

在有中斷、速度要求的情況下推薦選擇標準庫或寄存器。

2、數據處理

UART中斷:

接收上位機的消息,并將數據通過CAN發出去

進中斷一定要清中斷標志位!!!


CAN數據:

經測試,在中斷中接受數據,并通過UART發送出去,此方法在數據量比較低的情況下可以,但數據量高的情況下就不行了!!!!!

所以采用在While循環中接受CAN消息,然后在通過串口發送出去。

      if(CAN_MessagePending(CAN, CAN_FIFO0) > 0)

      {

        LedSta = !LedSta;

        CAN_Receive(CAN, CAN_FIFO0, &RxMessage);


        res_data_cnt = 0;

        if(RxMessage.IDE)

            id = RxMessage.ExtId;

        else

            id = RxMessage.StdId;

        dlc = RxMessage.DLC;

        if(RxMessage.IDE)

            ide = 0;

        else

            ide = 0x1;

        

        if(RxMessage.RTR)

            rtr = 0;

        else

            rtr = 0x2;

        

        res_data_buf[res_data_cnt++] = ide | rtr;

        res_data_buf[res_data_cnt++] = id >> 24;

        res_data_buf[res_data_cnt++] = id >> 16;

        res_data_buf[res_data_cnt++] = id >> 8;

        res_data_buf[res_data_cnt++] = id;

        res_data_buf[res_data_cnt++] = dlc;

        memcpy(res_data_buf + res_data_cnt, RxMessage.Data, 8);

        res_data_cnt += 8;

        send_cmd_data(UART_DATA_CMD_RECV_CAN_DATA, res_data_buf, res_data_cnt);

      }

待開發功能:


固件更新:STM32F042這款芯片有個很好的功能就是可以在程序內選擇啟動模式,不像其他32設置Boot0、Boot1的電平。在程序內可以實現跳轉。


關鍵字:USB-CAN  收發器  STM32 引用地址:USB-CAN收發器

上一篇:2.工程一:BMS通信
下一篇:GD32F407標準庫IAR環境 DMA+ADC+中斷

小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 邓州市| 界首市| 沙洋县| 乐业县| 乐东| 神木县| 谷城县| 延庆县| 安西县| 衡山县| 金沙县| 辽阳县| 石渠县| 山西省| 宁国市| 剑川县| 突泉县| 台山市| 延川县| 方山县| 井冈山市| 山阳县| 手机| 土默特右旗| 开封县| 筠连县| 灵台县| 宜兰县| 康保县| 白山市| 和龙市| 渑池县| 临湘市| 赤壁市| 桂东县| 蚌埠市| 兰溪市| 静安区| 泉州市| 岱山县| 太仓市|