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

歷史上的今天

今天是:2025年01月07日(星期二)

正在發(fā)生

2019年01月07日 | 兩片STM32使用HAL完成SPI全雙工主從通信

發(fā)布者:心靈清澈 來(lái)源: eefocus關(guān)鍵字:STM32  HAL  SPI  全雙工  主從通信 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

SPI是一種非常簡(jiǎn)單易用的全雙工主從式通信協(xié)議


本文使用兩片STM32F429,一個(gè)作為主機(jī),一個(gè)作為從機(jī)完成SPI的全雙工通信測(cè)試。


在STM32的HAL庫(kù)中簡(jiǎn)化了SPI主機(jī)端的發(fā)送接收,但是HAL庫(kù)沒(méi)有提供一個(gè)簡(jiǎn)單的SPI從機(jī)代碼接口,這樣就需要自己拼接接口來(lái)完成全雙工的通信。以下都以實(shí)現(xiàn)全雙工通信為目的進(jìn)行配置和編寫:


一 主機(jī)端:



禁止使用SPI的硬件片選信號(hào),因?yàn)檫@個(gè)信號(hào)是SPI使能了之后就一直為低,直到禁止了SPI之后才為高。可以使用某一個(gè)普通IO來(lái)充當(dāng)片選信號(hào)。



這里選用一個(gè)較低的速率來(lái)通信,在HAL庫(kù)的spi頭文件中有說(shuō)明各個(gè)模式下SPI的最大速度。


二 從機(jī)端:



主從的速率要一樣,從機(jī)打開SPI中斷


三 硬件連接:

主機(jī)                        從機(jī)


CS                          CS


CLK                        CLK


MISO                      MISO


MOSI                      MOSI


接收和發(fā)送都是直連不需要交叉。



四 主機(jī)代碼:

  /* USER CODE BEGIN 3 */

HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port, SPI1_NSS_Pin, GPIO_PIN_RESET);


HAL_SPI_TransmitReceive(&hspi1, txbuf, rxbuf, 1, 0xFF);

HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port, SPI1_NSS_Pin, GPIO_PIN_SET);

HAL_Delay(500);

  }

  /* USER CODE END 3 */

五 從機(jī)代碼:

現(xiàn)在while之前打開spi接收中斷:


  /* USER CODE BEGIN 2 */

HAL_SPI_Receive_IT(&hspi1, rxbuf, 1);

  /* USER CODE END 2 */

在中斷中使用阻塞函數(shù)把數(shù)據(jù)發(fā)送出去:


/* USER CODE BEGIN 4 */

void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)

{

if (hspi == &hspi1)

{

HAL_SPI_Transmit(&hspi1, txbuf, 1, 0xFFFF);

HAL_SPI_Receive_IT(&hspi1, rxbuf, 1);

}

}

/* USER CODE END 4 */


使用邏輯分析儀可以看到主機(jī)在發(fā)送的同時(shí)也收到了從機(jī)返回的數(shù)據(jù)。


可能在中斷里調(diào)用阻塞發(fā)送不是很好,如果有更好的方法歡迎指正。


另外在一片stm32上使用兩個(gè)SPI接口模擬主從機(jī)通信好像不能正常工作。


 

最后需要注意的是如果你使用了以上方法,能測(cè)試spi通信成功,但是當(dāng)主程序有其他任務(wù)的時(shí)候就會(huì)非常卡頓,因?yàn)樵谥袛嘀姓{(diào)用了阻塞發(fā)送的函數(shù)。為了讓程序更加流暢一種方法是減小HAL_SPI_Transmit的等待時(shí)間,另外一種方法就是使用DMA.


因?yàn)檫@里我只需要用DMA回復(fù)SPI master數(shù)據(jù),所以我只開啟了從機(jī)的SPI發(fā)送DMA,而且沒(méi)有使能DMA中斷。配置如下圖:




將spi.c中的代碼更改如下:


/* USER CODE BEGIN 1 */

void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)

{

if (hspi == &hspi1)

{

HAL_SPI_Transmit_DMA(&hspi1, p_phase_buf, 1);

//HAL_SPI_Transmit(&hspi1, p_phase_buf, 1, 0xFFF);

HAL_SPI_Receive_IT(&hspi1, p_pwm_freq, 1);

}

}

/* USER CODE END 1 */


添加DMA就是這么簡(jiǎn)單,由此就看到HAL庫(kù)高效的地方了,使用起來(lái)確實(shí)能大幅提高工作效率


關(guān)鍵字:STM32  HAL  SPI  全雙工  主從通信 引用地址:兩片STM32使用HAL完成SPI全雙工主從通信

上一篇:s3c2440裸板_中斷體系結(jié)構(gòu)
下一篇:STM32之串口DMA接收不定長(zhǎng)數(shù)據(jù)

推薦閱讀

滴滴在近期完成對(duì)小藍(lán)單車的收購(gòu),并且已經(jīng)簽署了收購(gòu)協(xié)議,另外,已經(jīng)投資了ofo的滴滴正在試圖做自己的共享單車品牌。?滴滴方面未對(duì)此事進(jìn)行回應(yīng),但有接近交易的內(nèi)部人士向記者透露說(shuō),滴滴確實(shí)有做共享單車的打算。?滴滴與ofo的矛盾至今,ofo已經(jīng)進(jìn)行了至少8輪融資,而其中,滴滴參與了4輪融資,并在4月將ofo接入到App中,用戶可直接在滴滴上面使用of...
  1月4日,由365光伏、中國(guó)分布式能源創(chuàng)新應(yīng)用聯(lián)盟、國(guó)合洲際能源咨詢?cè)郝?lián)合主辦的第六屆中國(guó)光伏年會(huì)暨2018分布式能源創(chuàng)新應(yīng)用大會(huì)在蘇州隆重舉行。本次大會(huì)著眼行業(yè)年度熱點(diǎn)和前沿生態(tài),盤點(diǎn)行業(yè)格局,展望前路與趨勢(shì),吸引了業(yè)內(nèi)400多家企業(yè)、逾500多位行業(yè)專家、企業(yè)領(lǐng)袖及同仁的參與。國(guó)務(wù)院原參事、中國(guó)可再生能源學(xué)會(huì)原理事長(zhǎng)石定寰先生為大會(huì)致...
北京時(shí)間1月7日凌晨,在CES2020開展前夕,TCL預(yù)發(fā)布三部TCL 10系列智能手機(jī),包括首款5G手機(jī)TCL 10 5G,并首批確認(rèn)將采用剛剛發(fā)布的高通驍龍765系列雙模5G SoC的手機(jī)。此外TCL通訊還正式發(fā)布了旗下Alcatel 3L等五款智能手機(jī),TCL LINKHUB Mesh AC1200和TCL LINKHUB Mesh Wi-Fi AC1200路由器及TCL MOVETRACK寵物追蹤器等多款智能連接產(chǎn)品,以...
91% 的受調(diào)研者表示,2030 年時(shí)汽車將采用全電或混合動(dòng)力自動(dòng)駕駛技術(shù)將主要關(guān)注司機(jī)和乘客安全高速 WiFi、無(wú)線充電和車輛間通信成為最主要的功能特點(diǎn)軟件定義車輛作為汽車廠商最重要的議題美國(guó)伊利諾伊州萊爾 – 2021 年 1 月 7 日 – 全球領(lǐng)先的連接與電子解決方案提供商Molex莫仕發(fā)布面向汽車行業(yè)決策者的全球性調(diào)研成果,對(duì)將會(huì)影響到“未...

史海拾趣

小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 巧家县| 基隆市| 天祝| 靖江市| 泉州市| 油尖旺区| 浮梁县| 丰原市| 万荣县| 颍上县| 攀枝花市| 政和县| 资源县| 洪泽县| 克什克腾旗| 玛沁县| 庆城县| 伊宁市| 临西县| 河西区| 搜索| 灵寿县| 旅游| 台东县| 温泉县| 福泉市| 德阳市| 卢氏县| 都昌县| 和平区| 望谟县| 当阳市| 浦东新区| 扎鲁特旗| 滦平县| 杂多县| 平度市| 苏尼特右旗| 萍乡市| 尉犁县| 铜梁县|