国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32 通過HAL庫實(shí)現(xiàn)雙機(jī)SPI程序燒錄之一SPI雙機(jī)通信

這篇具有很好參考價(jià)值的文章主要介紹了STM32 通過HAL庫實(shí)現(xiàn)雙機(jī)SPI程序燒錄之一SPI雙機(jī)通信。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

?一、實(shí)現(xiàn)SPI雙機(jī)通信

主要功能:STM32F407VET6作為主機(jī),STM32F103ZET6作為從機(jī)實(shí)現(xiàn)F4通過SPI接口發(fā)送數(shù)據(jù)給F1進(jìn)行串口打印功能

主要是使用STM32cubemx進(jìn)行相關(guān)配置(使用這個(gè)軟件不能只用于生成代碼,要學(xué)會(huì)讀懂生成的每一句代碼這樣才方便后期調(diào)試,不然出現(xiàn)問題根本找不到)

二、主機(jī)F4相關(guān)配置

1、配置SYS

選擇Serial Waire進(jìn)行調(diào)試(通常都選這個(gè))

hal庫spi,stm32,單片機(jī),嵌入式硬件

2、配置RCC

hal庫spi,stm32,單片機(jī),嵌入式硬件

3、配置串口

配置波特率(并未開啟串口中斷,不需要使用)?

hal庫spi,stm32,單片機(jī),嵌入式硬件

串口重定向(方便使用printf進(jìn)行打印,這里我添加在usart.c文件夾下)

#include "usart.h"

/* USER CODE BEGIN 0 */
#include "stdio.h"
struct __FILE 
{ 
	int handle; 
}; 

FILE __stdout;       
//定義_sys_exit()以避免使用半主機(jī)模式    
void _sys_exit(int x) 
{ 
	x = x; 
} 
//重定義fputc函數(shù) 
int fputc(int ch, FILE *f)
{ 	
	while((USART1->SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢   
	USART1->DR=(uint8_t)ch;      
	return ch;
}
/* USER CODE END 0 */

UART_HandleTypeDef huart1;

/* USART1 init function */

4、配置SPI接口

配置模式未主機(jī)模式,開啟NSS位進(jìn)行片選(可以增加穩(wěn)定性)

hal庫spi,stm32,單片機(jī),嵌入式硬件

IO端口:

hal庫spi,stm32,單片機(jī),嵌入式硬件

注:注意SPI的極性和相位要和從機(jī)保持一致

5、配置時(shí)鐘樹

直接選擇最大即可

hal庫spi,stm32,單片機(jī),嵌入式硬件

6、代碼部分

在while循環(huán)直接添加

	uint8_t data[5] = {0x00,0x11,0x22,0x33,0x44};
	
	for(int i=0; i<fnum;i++)
	{
		HAL_SPI_Transmit_DMA(&hspi1,&ReadBuffer[i],1);
		HAL_Delay(1);
	}

至此,F(xiàn)4部分基本配置完成,接下來才是重點(diǎn)!!

三、從機(jī)F1相關(guān)配置

1、配置SYS

同上

2、配置RCC

同上

3、配置串口

同上

4、SPI配置

選擇從機(jī)模式,輸入片選,以及極性和相位

hal庫spi,stm32,單片機(jī),嵌入式硬件

5、開啟SPI中斷相關(guān)

開啟SPI中斷,從機(jī)主要是采取中斷的方式進(jìn)行接收

hal庫spi,stm32,單片機(jī),嵌入式硬件

6、時(shí)鐘樹配置

?同意配置最大即可hal庫spi,stm32,單片機(jī),嵌入式硬件

?生成代碼,進(jìn)入代碼內(nèi)部進(jìn)行編寫

7、修改中斷函數(shù)

在stm32f1xx_it.c文件下找到SPI2_IRQHandler添加一下內(nèi)容及開啟中斷重復(fù)接收

hal庫spi,stm32,單片機(jī),嵌入式硬件

/**
  * @brief This function handles SPI2 global interrupt.
  */
void SPI2_IRQHandler(void)
{
  /* USER CODE BEGIN SPI2_IRQn 0 */

  /* USER CODE END SPI2_IRQn 0 */
  HAL_SPI_IRQHandler(&hspi2);
  /* USER CODE BEGIN SPI2_IRQn 1 */
	while(HAL_SPI_Receive_IT(&hspi2,(uint8_t *)spi_buffer, RXBUFFERSIZE) != HAL_OK)
	{

	}
  /* USER CODE END SPI2_IRQn 1 */
}

編寫中斷回調(diào)函數(shù)

hal庫spi,stm32,單片機(jī),嵌入式硬件

?添加在stm32f1xx_it.c最后即可

void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef* spiHandle)
{
	if(spiHandle->Instance == SPI2)
	{
		if(spi_rx_cnt < SPI_REC_LEN)
		{
			ReadBuffer[spi_rx_cnt] = spi_buffer[0];
			spi_rx_cnt++;
			printf("buffer: 0x%x\r\n",spi_buffer[0]);
		}
	}
}

8、主函數(shù)添加

HAL_SPI_Receive_IT(&hspi2,(uint8_t *)spi_buffer, RXBUFFERSIZE);

至此從機(jī)相關(guān)也編寫完畢,在SPI回調(diào)函數(shù)中,會(huì)打印接收到的內(nèi)容如下:

hal庫spi,stm32,單片機(jī),嵌入式硬件

?出現(xiàn)已下現(xiàn)象即可表明通信成功!?。⊥瓿闪薙PI雙機(jī)燒錄的第一步,下一章講講解STM32從SD卡讀取bin文件并通過SPI接口發(fā)送給從機(jī)

需要源代碼的請(qǐng)留言,創(chuàng)造不易歡迎點(diǎn)贊收藏,感謝支持文章來源地址http://www.zghlxwxcb.cn/news/detail-717383.html

到了這里,關(guān)于STM32 通過HAL庫實(shí)現(xiàn)雙機(jī)SPI程序燒錄之一SPI雙機(jī)通信的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【STM32L496】使用HAL庫實(shí)現(xiàn)SPI寫入/讀取數(shù)據(jù)(AD5421)

    【STM32L496】使用HAL庫實(shí)現(xiàn)SPI寫入/讀取數(shù)據(jù)(AD5421)

    SPI協(xié)議詳解(圖文并茂+超詳細(xì)) SPI超詳細(xì)解析 【STM32筆記】HAL庫中的SPI傳輸(可利用中斷或DMA進(jìn)行連續(xù)傳輸) AD5421是一款集成器件,設(shè)計(jì)用于環(huán)路供電型4-20mA智能發(fā)射器應(yīng)用。AD5421在單芯片內(nèi)提供如下特性和功能:16位DAC和電流放大器,用于對(duì)環(huán)路電流進(jìn)行數(shù)字控制;用于

    2024年02月03日
    瀏覽(73)
  • STM32 HAL庫 CAN雙機(jī)通信接收無法進(jìn)入中斷、中斷沒有反應(yīng)的解決方法

    STM32 HAL庫 CAN雙機(jī)通信接收無法進(jìn)入中斷、中斷沒有反應(yīng)的解決方法

    在調(diào)試HAL庫下的CAN雙機(jī)(雙F103ZET6)通信時(shí),阻塞輪詢接收完全正常,但是中斷接收沒有反應(yīng)。翻看了GL的燒腦之路總結(jié)(一):Cubemx創(chuàng)建CAN通信工程,無法進(jìn)入CAN中斷的原因這篇文章以后,核實(shí)自己的硬件電路沒有問題,于是對(duì)自己的工程文件進(jìn)行整理,把 ①HAL_CAN_ConfigFi

    2024年02月04日
    瀏覽(27)
  • STM32 HAL庫 STM32CubeMX -- SPI

    STM32 HAL庫 STM32CubeMX -- SPI

    SPI (Serial Peripheral Interface)協(xié)議,即串行外圍設(shè)備接口,是一種高速全雙工的通信總線。 它被廣泛地使用在ADC、LCD 等設(shè)備與MCU 間,要求通訊速率較高的場合。 SPI 通訊使用3 條總線及片選線, 3 條總線分別為SCK、MOSI、MISO,片選線為SS(CS) ,它們的作用介紹如下: (1) SS( Slav

    2024年02月13日
    瀏覽(27)
  • STM32通過HAL庫實(shí)現(xiàn)DMX512控制燈

    STM32通過HAL庫實(shí)現(xiàn)DMX512控制燈

    關(guān)于DMX512協(xié)議的解釋下面這篇文章寫的十分詳盡: 鏈接:作者:夏沫の淺雨 通過串口模擬 通過上文我們可以得知,數(shù)據(jù)幀需要 1位低電平+8位數(shù)據(jù)位+2位高電平 ,這種格式與串口通信協(xié)議的格式可以說是幾乎一模一樣,因?yàn)槠饺栈旧隙际鞘褂么?N1格式。因此,若是不考慮

    2024年04月12日
    瀏覽(18)
  • 【STM32 CubeMX】SPI HAL庫編程

    【STM32 CubeMX】SPI HAL庫編程

    STM32 CubeMX 是一款由 STMicroelectronics 提供的圖形化配置工具,用于生成 STM32 微控制器的初始化代碼和項(xiàng)目框架。在 STM32 開發(fā)中,使用 CubeMX 可以大大簡化初始化過程,并幫助開發(fā)者快速構(gòu)建應(yīng)用程序。其中,SPI(串行外設(shè)接口)是一種常用的通信協(xié)議,它在連接外部設(shè)備時(shí)非常

    2024年02月19日
    瀏覽(28)
  • Note10:基于STM32H7+HAL+CubeMX+DMA+SPI+串口中斷+定時(shí)器+RTC的多傳感器數(shù)據(jù)采集系統(tǒng)(2*ADXL355和ADXL375通過Sync時(shí)序同步)

    Note10:基于STM32H7+HAL+CubeMX+DMA+SPI+串口中斷+定時(shí)器+RTC的多傳感器數(shù)據(jù)采集系統(tǒng)(2*ADXL355和ADXL375通過Sync時(shí)序同步)

    本文的初衷一方面是將我的一些關(guān)于STM32開發(fā)方面淺顯的個(gè)人經(jīng)驗(yàn)分享給初學(xué)者、并期望得到大佬的批評(píng)指正,另一方面是記錄自己的實(shí)驗(yàn)過程便于回顧。 我預(yù)感應(yīng)該要寫很多,不過鑒于之前的數(shù)篇筆跡中,對(duì)于SPI/DMA/ADXL3XX系列加表的使用已經(jīng)詳細(xì)描述過了,所以這篇博客只

    2024年02月10日
    瀏覽(24)
  • [HAL]STM32 SPI+DMA驅(qū)動(dòng)WS2812

    [HAL]STM32 SPI+DMA驅(qū)動(dòng)WS2812

    該程序是純手敲,非Cube生成!所有代碼均注釋。 源碼在文章后面獲取 Keyword: 單線通訊、歸零碼、Reset、RGB順序 RGB一共有24bit位 -相當(dāng)于驅(qū)動(dòng)一個(gè)燈要24bit位 -驅(qū)動(dòng)若干個(gè)燈要24* n bit位,通過Reset碼決定數(shù)據(jù)終止(保持) 24bit位應(yīng)該如何發(fā)送? 可見: 表示低電平需要 T0H和T0L的配

    2024年02月09日
    瀏覽(33)
  • STM32的HAL庫SPI操作(master 模式)-根據(jù)時(shí)序圖配置SPI

    STM32的HAL庫SPI操作(master 模式)-根據(jù)時(shí)序圖配置SPI

    SPI基本概念請(qǐng)自行百度,參考:百度百科SPI簡介.我們講重點(diǎn)和要注意的地方。 接線一一對(duì)應(yīng) 也就是說主控的MISO,MOSI,SCLK,[CSn]分別和設(shè)備的MISO,MOSI,SCLK,[CSn]一一對(duì)應(yīng)相連,不交叉,不交叉,不交叉…(重要的事情說三遍)。 這是無線模塊CC2500的SPI接口時(shí)序,這里可以看到,從

    2024年02月06日
    瀏覽(23)
  • stm32 AD7606 芯片驅(qū)動(dòng) hal庫 spi通訊

    stm32 AD7606 芯片驅(qū)動(dòng) hal庫 spi通訊

    ?????????這兩天用來個(gè)ad7606 的芯片,結(jié)果硬件出來個(gè)問題,花了不少時(shí)間看這個(gè)芯片手冊(cè),干脆分享一下。 ? ? ? ? OS0 OS1 OS2 ? ? ? ? 這個(gè)三個(gè)引腳用于配置芯片的采樣頻率,只要不設(shè)置為111即可正常采樣; CONVSTA CONVSTB 這兩個(gè)引腳用于啟動(dòng)芯片采集轉(zhuǎn)換,默認(rèn)高電平,

    2024年04月26日
    瀏覽(30)
  • 【STM32+HAL】語音識(shí)別模塊LD3320(SPI版)

    【STM32+HAL】語音識(shí)別模塊LD3320(SPI版)

    有關(guān)CUBEMX的初始化配置,參見我的另一篇blog:【STM32+HAL】CUBEMX初始化配置 1、芯片:?STM32F103C6T6(同C8T6) 2、STM32CubeMx軟件 3、語言識(shí)別模塊:LD3320(SPI版) 實(shí)現(xiàn)串口打印語音輸入 1、SPI功能開啟 2、IO口配置 3、中斷配置 至此,HAL庫配置完成 1、LD3320.C 2、LD3320.H 3、主函數(shù) 若要

    2024年02月19日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包