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

歷史上的今天

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

2020年07月06日 | STM32學習------SPI筆記【寄存器版】

發布者:Bby1978 來源: eefocus關鍵字:STM32  SPI筆記  寄存器版 手機看文章 掃描二維碼
隨時隨地手機看文章

一、介紹

簡述:

1)通常 SPI 通信要求 4 根線,分別是 MOSI(主機輸出從機輸入), MISO(主機輸入從機輸出), CLK(時鐘線), CS(片選線)

2)當發送和接受數據的工作都準備好了,只要有時鐘 CLK,就發送數據,沒有時鐘就不發送,而且一個時鐘周期發送一位(bit)數據,所以發送數據的快慢由時鐘頻率來控制。

3)至于時鐘和數據的相位沒有特別嚴格的要求(而 IIC 中,數據的變化只能在 SCL 是低電平的時候發生), SPI數據的變化是一個時鐘周期一次,這樣的方法來傳輸數據就簡單多了。我們可以根據需求對時鐘的極性和相位做調整,看看是在時鐘上升沿還是下降沿來發送數據,還有停止發送時時鐘的極性,是保持高電平還是低電平。

4)另外在多機通信時, SPI 只是簡單的通過一個片選信號(拉低電平選擇)來選擇哪個設備占用總線,但是 IIC 是通過發送從設備地址來自動選擇的。(簡介來自某手冊說明)


SPI有四種時序模式:

在這里插入圖片描述

SPI工作原理,方便自己就用了原子哥的原話:

1)硬件上為4根線。

2)主機和從機都有一個串行移位寄存器,主機通過向它的SPI串行寄存器寫入一個字節來發起一次傳輸。

3)串行移位寄存器通過MOSI信號線將字節傳送給從機,從機也將自己的串行移位寄存器中的內容通過MISO信號線返回給主機。這樣,兩個移位寄存器中的內容就被交換。

4)外設的寫操作和讀操作是同步完成的。如果只進行寫操作,主機只需忽略接收到的字節;反之,若主機要讀取從機的一個字節,就必須發送一個空字節來引發從機的傳輸。

在這里插入圖片描述

在當第一次接觸SPI協議的時候,還是練習OLED時,當時總感覺這東西太難了,看不懂時序,不清楚原理。但是在學習過IIC之后,感覺SPI比起IIC來說很簡潔明了了,IIC模擬起來復雜,硬件配置也不是那么輕松。總之,對于現在的我來說,都不是很輕松。


二、模擬SPI

比起來IIC,SPI代碼真是簡潔了許多。模擬SPI只需要簡單初始化用到的IO再根據時序圖來實現發送接收數據即可。


/*

#define SPI_SCK pbout(13)

#define SPI_MOSI pbout(15)

#define SPI_MISO pbin(14)

*/

/*

SPI_SCK:PB13(SPI2)

SPI_MOSI:PB15,

SPI_MISO:PB14

片選腳(CS)不用初始化,因為片選腳屬于需要SPI控制的芯片自身。可以在驅動芯片時定義CS引腳

*/

void SPI_Init(void)

{

RCC->APB2ENR |= 1<<3;

GPIOB->CRH &= 0x000fffff;

GPIOB->CRH |= 0x38300000;

SPI_SCK = 1;//空閑電平為高

}


/*

讀寫一個字節,因為全雙工同時發收

txdata

配置的時序圖為模式3,即CPOL=1,CPHA=1

*/

u8 SPI_ReadWriteOneData(u8 txdata)

{

u8 rxdata=0;

u8 i=0;

for(i=0;i<8;i++)

{

SPI_SCK=0;

if(txdata&0x80)SPI_MOSI=1;//發送數據格式為高位在前,八位。當發送的某一位為1時,對MOSI賦1.

else SPI_MOSI=0;//主機采樣為第二個邊沿,為上升沿,所以主機發送數據時為下降沿

txdata<<=1;

SPI_SCK=1;

//上升沿時讀取從機發送過來的數據

rxdata<<=1;

if(SPI_MISO)rxdata |= 0x01;

}

return rxdata;

}


三、硬件SPI

硬件SPI也很好理解,唯一難理解的就是NSS(SPI_CR1)腳管理。


/*

SPI硬件時序配置初始化

Hardware:硬件

pb13:sp2_sck

pb14:miso

pb15:mosi

*/

void HWSPI_Init(void)

{

RCC->APB2ENR |= 1<<3;

GPIOB->CRH &= 0x000fffff;

GPIOB->CRH |= 0xb8b00000;

RCC->APB1ENR |= 1<<14;//開啟rcc時鐘

RCC->APB1RSTR |= 1<<14;

RCC->APB1RSTR &=~(1<<14);

SPI2->CR1 |= 0x3<<8;

//8,9位:啟動軟件NSS管理(也就是允許用程序控制片選腳)。當配置MCU為主模式(MSTR=1),SSOE=0時,NSS為低的話則會進入主模式失敗

//而進入從模式。所以必須拉高。

//一旦使能SSOE位,NSS引腳也可以作為輸出引腳,并在SPI處于主模式時將NSS拉低;此時,所有的SPI設備,如果它們的NSS引腳連接

//到主設備的NSS引腳,則會檢測到低電平,如果它們被設置為NSS硬件模式,就會自動進入從設備狀態。(中文手冊23.3.1)


SPI2->CR1 |= 1<<1;//SCK空閑電平為高

SPI2->CR1 |= 1<<0;//數據采樣從第二個邊沿開始

SPI2->CR1 |= 1<<2;//配置為主設備

SPI2->CR1 |= 1<<6;//使能SPI

HWSPI_ReadWriteOneByte(0xff);

}



/*發送和接收數據(8位)*/

u8 HWSPI_ReadWriteOneByte(u8 data)

{

u32 i=0;

while(!(SPI2->SR & 1<<1))//等待發送緩沖區空

{

i++;

if(i>0xfffe)return 0;//超時,發生錯誤

}

SPI2->DR = data;

i=0;

while(!(SPI2->SR & 1<<0))//等待接收緩沖區非空

{

i++;

if(i>0xfffe)return 0;

}

return SPI2->DR;

}


目前只學習了硬件SPI的主模式,好多強大的功能同樣沒有學習到,所有只能記錄到這了。才疏學淺,慚愧慚愧~

關鍵字:STM32  SPI筆記  寄存器版 引用地址:STM32學習------SPI筆記【寄存器版】

上一篇:STM32F10x 學習筆記之USART實現串口通訊 DMA 方式
下一篇:STM32自學之SPI的DMA操作(寄存器級)

推薦閱讀

7月4日11:00-12:00,配天機器人在上海CIROS展會舉辦了2018年首款新品R——負載6kg長臂桌面型工業機器人的發布會,帶來了AIR6L高速走迷宮、AIR6L水下碼垛等新方案,展現配天對速度、精度、對性能品質、對技術的高追求! 發布會中配天機器人總經理徐志根先生表示,配天八年來都在默默地專注于技術、專注于研發,并且在設計配天機器人這一品牌之初,就定...
C-V2X可以預警潛在的危險。歐盟成員國昨天拒絕將Wi-Fi作為未來汽車對汽車通信的標準。21個歐盟國家投票對歐盟委員會的一項計劃表示反對,該計劃將禁止使用5G蜂窩網絡連接,支持使用短程Wi-Fi。這一決定可以說為歐洲的5G支持汽車打開了大門,那么這對汽車行業到底意味著什么呢?這幾年來,汽車行業對于在汽車上聯網是使用Wi-Fi還是5G一直存在著分歧,通用汽...
據OPPO官方消息,該公司與沃達豐(Vodafone)和愛立信(Ericsson)合作,參與完成英國首個5G SA網絡,并提供首個5G SA網絡切片服務。  據悉,這一全新網絡在英國考文垂大學搭建,采用的是高通驍龍865移動平臺以及聯發科天璣1000系列移動平臺的OPPO 5G手機。  OPPO聯合愛立信,基于OPPO Find X2 Pro與Reno3手機產品,分別與高通以及聯發...
在全球晶圓代工市場上,臺積電是第一大,產能和技術都是領先的,份額超過50%,三星拿下了20%多的份額,先進工藝也能追著臺積電跑,5nm工藝也代工了麒麟888。然而最近的消息不太妙,三星的EUV良率遇到麻煩了。韓國媒體報道,三星電子華城園區V1廠,最近面臨晶圓代工良率改善難題,5nm等部分工藝良率低于50%。三星華城園區共有V1、S3及S4等晶圓廠,其中V1為E...

史海拾趣

問答坊 | AI 解惑

繼續求教:PIC16位機哪種更適合

先設定應用背景: A測控16個溫度點,B控制4臺步進電機,C控制8個繼電器,D至少預留12個以上的測控端接受多種傳感器的電信號 還有一個小前提,芯片容易買到。因為我研究測控模塊只是為了提高產品的技術含量,不可能大批制造板子,更不會轉行 1、F ...…

查看全部問答∨

基于GPRS的便攜式多參數移動監護儀的設計-續

W_DOT: MOV A,O_YL ; Y坐標轉換計算 MOV B,#20h MUL AB MOV O_YL,A ; O_YL存地址低8位 MOV A,B XCH A,O_XH ; O_XH存地址高8位 PUSH ACC ; 存D7標志位 CLR ACC.7 ; 清D7位 MOV B,#20H ; X坐標高位轉換計算 MUL AB ADD A,O_YL MOV O_YL ...…

查看全部問答∨

數碼相機的CMOS傳感器知識介紹

本帖最后由 jameswangsynnex 于 2015-3-3 20:02 編輯 CMOS即互補性金屬氧化物半導體。其在微處理器、閃存和特定用途集成電路(ASIC)的半導體技術上占有絕對重要的地位。CMOS和CCD都是可用來感受光線變化的半導體。CMOS主要是利用“硅”和“鍺”這兩 ...…

查看全部問答∨

在windows下如何ddk與vc構建開發環境?

最近一直在尋找如何只用ddk(2600)與vc6.0來建xp下的驅動開發環境,該如何配置呢?我是試過很多方案編譯都不能通過,希望高人指點一二!…

查看全部問答∨

二層交換機的實現

本章節是我寫的 《嵌入式通信設備開發---基于MPC82xx 》一章的縮略版 請大家給看看 寫得如何 可以聯系我獲取其他章節 給出意見的都有分 文檔密碼:ads …

查看全部問答∨

編譯2.6.14.1的內核出錯了,有會的看看,已經一個星期了,急,在線..........

我用的是arm-linux-gcc3.3.2,在編譯kernel2.6.14.1時,報錯 /usr/local/arm/3.3.2/bin/arm-linux-ld:arch/arm/kernel/vmlinux.lds:711:parse error 這是什么錯誤啊,大概是什么原因引起的,如何修改呢? 大家幫幫忙,都弄了一個星期了,一點結果 ...…

查看全部問答∨

請問STUSB線路推薦的ST2052BD成本多少,有便宜的替代料嗎?

                                 請問ST USB線路推薦的ST2052BD成本多少,有便宜的替代料嗎?…

查看全部問答∨

quartus 編輯VHDL的幾個技巧(歡迎批評指正)

通過請教別人知道: 1 在編輯VHDL時,需要屏蔽某一句代碼時要寫-- 屏蔽一大坨代碼時我一直是每行加--(剛學哈),通過請教,現在找到兩個方法:第一:利用q2的區域注釋功能,選擇要屏蔽的代碼,右鍵選擇comment selection/uncomment selection 可 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 广西| 铜鼓县| 鹤峰县| 黄陵县| 黑龙江省| 莱州市| 马尔康县| 德昌县| 霍山县| 金山区| 南城县| 积石山| 昌都县| 宜章县| 南通市| 元氏县| 南充市| 华安县| 巴马| 即墨市| 壶关县| 石泉县| 太康县| 湘乡市| 乌兰察布市| 耿马| 大竹县| 逊克县| 潞西市| 高安市| 石渠县| 古浪县| 福鼎市| 惠水县| 河曲县| 武宣县| 永登县| 石景山区| 淅川县| 旬阳县| 合作市|