成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

實(shí)戰(zhàn)技能分享,各種數(shù)據(jù)類型的SPI, UART, I2C,F(xiàn)DCAN等方式的通信傳輸以及存儲(chǔ)到EEP

cgspine / 694人閱讀

摘要:編程手冊(cè)和編程手冊(cè)和編程手冊(cè)各種數(shù)據(jù)類型編程,等存儲(chǔ)器的簡易方法一般這些存儲(chǔ)器都是字節(jié)編程,寫入浮點(diǎn)等數(shù)據(jù)類型時(shí)不太方便。

目錄

背景知識(shí)

F1編程手冊(cè):

F3和F4編程手冊(cè):

F7和H7編程手冊(cè):

各種數(shù)據(jù)類型編程EEPROM,SPI Flash等存儲(chǔ)器的簡易方法

各種數(shù)據(jù)類型的SPI,UART,I2C,F(xiàn)DCAN等傳輸問題

實(shí)戰(zhàn)案例:

補(bǔ)充拓展貼,特別是結(jié)構(gòu)體對(duì)齊問題:


背景知識(shí)

各種類型的數(shù)據(jù)傳輸和存儲(chǔ)就涉及到大小端的問題,所以我們?cè)陂_頭把這個(gè)知識(shí)點(diǎn)做個(gè)說明。

?

首先要簡單說下芯片的大小端問題,我們這里主要討論Cortex-M內(nèi)核。

權(quán)威指南的說明如下:
Support for little endian and big endian memory systems e The Cortex-M3 and Cortex-M4 processors can work with either little endian or big endian memory systems. In practice, a microcontroller product is normally designed with just one endian configuration.

M內(nèi)核支持大端或者小端,實(shí)際應(yīng)用中大部分內(nèi)核都是小端。以STM32為例,全部都是小端,而且是芯片設(shè)計(jì)之初就固化進(jìn)去的,不可修改。市面上其他廠家基本也都固化的小端格式。
?

F1編程手冊(cè):

?

F3和F4編程手冊(cè):

?

F7和H7編程手冊(cè):

?


各種數(shù)據(jù)類型編程EEPROM,SPI Flash等存儲(chǔ)器的簡易方法


一般這些存儲(chǔ)器都是字節(jié)編程,寫入浮點(diǎn)等數(shù)據(jù)類型時(shí)不太方便。

這里分享一個(gè)方法,定義一個(gè)結(jié)構(gòu)體,將各種數(shù)據(jù)類型封裝進(jìn)去:

?

寫入的時(shí)候采用下面方式:

?

讀取時(shí)可以采用下面方式:

?

各種數(shù)據(jù)類型的SPI,UART,I2C,F(xiàn)DCAN等傳輸問題


這里我們以串口通信為例,比如主機(jī)要發(fā)送如下格式數(shù)據(jù)給從機(jī):

?

我們可以做一個(gè)如下結(jié)構(gòu)體格式:

typedef struct{    uint8_t ucStart;                            uint16_t usCO2;    uint16_t usPM25;            uint16_t usHumidity;              float    Temprature;    uint32_t ulParam;    uint8_t  ucEnd1;               uint8_t  ucEnd2;   }UART_T;UART_T g_tUartParam;

主機(jī)發(fā)送的時(shí)候我們就可以采用如下方法:

comSendBuf(COM1, (uint8_t *)&g_tUartParam, sizeof(UART_T));

從機(jī)工程也定義一個(gè)同樣的結(jié)構(gòu)體變量,比如我們把接收到一幀數(shù)據(jù)存到緩沖uint8_t buf[50]里面了。

我們就可以定義一個(gè)結(jié)構(gòu)體指針變量:

UART_T *pUartParam;pUartParam = (UART_T *)buf;

那么我們就可以pUartParam->usCO2,??pUartParam->Temprature等方式來訪問,非常方便。
?


實(shí)戰(zhàn)案例:


大家可以下載我們論壇置頂帖V5,V6或者V7板子出廠程序,里面都有相關(guān)代碼參考。

?

補(bǔ)充拓展貼,特別是結(jié)構(gòu)體對(duì)齊問題:


1、【燒腦技術(shù)貼】無法回避的字節(jié)對(duì)齊問題,從八個(gè)方向深入探討(變量對(duì)齊,棧對(duì)齊,DMA對(duì)齊,結(jié)構(gòu)體成對(duì)齊,Cache, RTOS雙堆棧等):地址鏈接

2、推薦一種超簡單的硬件位帶bitband操作方法,讓變量,寄存器控制,IO訪問更便捷,無需用戶計(jì)算位置:地址鏈接

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/124460.html

相關(guān)文章

  • STM32學(xué)習(xí)筆記 第二章 STM32資源介紹

    摘要:總線掛載的外設(shè)有等。外設(shè)地址映射片上外設(shè)區(qū)分為三條總線,根據(jù)外設(shè)速度的不同,不同總線掛載著不同的外設(shè),掛載低速外設(shè),和掛載高速外設(shè)。 第二章 STM32資源介紹 2...

    G9YH 評(píng)論0 收藏0
  • SPI、PCI、IIC、UART、GPIO、AXI4協(xié)議總結(jié)大全

    摘要:從設(shè)備使能信號(hào),由主設(shè)備控制,只有該信號(hào)為預(yù)先規(guī)定的使能信號(hào),對(duì)該芯片的操作才有效,這就允許再統(tǒng)一總線上連接多個(gè)設(shè)備。點(diǎn)對(duì)點(diǎn)通信中,接口不需要進(jìn)行尋址操作,但是沒有指定的流控制,沒有應(yīng)答機(jī)制確認(rèn)是否接收到數(shù)據(jù)。 1、GPIO 通用可編程IO接口,對(duì)于簡單的外圍設(shè)備或者電路,需要CPU為之提供...

    zhangrxiang 評(píng)論0 收藏0
  • stm32 高效串口收發(fā)

    摘要:接收緩沖區(qū)和發(fā)送緩沖區(qū)的請(qǐng)求是獨(dú)立的。此時(shí)串口實(shí)際上還有個(gè)字節(jié)并未發(fā)送完成,數(shù)據(jù)寄存器和移位寄存器中的個(gè)字節(jié)還需要發(fā)送,并不能關(guān)閉串口發(fā)送。 文章目錄 串口通訊串...

    darkerXi 評(píng)論0 收藏0
  • DMA控制器原理詳解

    摘要:目錄工作原理硬件架構(gòu)硬件架構(gòu)通道的作用寄存器出現(xiàn)的目的出現(xiàn)的目的工作原理全拼直接內(nèi)存存取,在傳統(tǒng)的存取數(shù)據(jù)時(shí)會(huì)先將數(shù)據(jù)放到緩存寄存器中然后在寫入到指定位置存取數(shù)據(jù)流程圖經(jīng)歷了三個(gè)步驟,先將內(nèi)存中指定位置 目錄 工作原理 DMA硬件架構(gòu) DMA通道的作用 DMA寄存器 DMA出現(xiàn)的目的 工作原...

    moven_j 評(píng)論0 收藏0
  • ESP32-S2上使用SPI接口芯片DM9051NP轉(zhuǎn)以太網(wǎng)無線物聯(lián)網(wǎng)網(wǎng)關(guān)開發(fā)指導(dǎo)

    摘要:前言芯片接口占用管腳數(shù)量比以太網(wǎng)的少,版線布局可更精簡。網(wǎng)卡芯片介紹接口網(wǎng)卡芯片是為方物聯(lián)網(wǎng)行業(yè)進(jìn)以太網(wǎng)通信而開發(fā)出的解決方案。此應(yīng)用可用于監(jiān)控家庭物聯(lián)網(wǎng)網(wǎng)關(guān)搭建等。 前言 ????DM9051NP芯片?SPI接口占用管腳數(shù)量比以太網(wǎng)PHY的RMII/MII少,PCBA版線布局可更精簡。...

    wangjuntytl 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<