SPI時(shí)序
SPI時(shí)序圖如下:
STM32做為主機(jī)設(shè)計(jì)SPI時(shí)序一般選用CPOL=1/CPHA=1;
SPI通信配置
1、時(shí)鐘使能。GPIO時(shí)鐘使能RCC->APB2ENR,SPI時(shí)鐘使能RCC->APB2ENR設(shè)置。
(為什么還要連接GPIO時(shí)鐘,參見(jiàn)STM32參考手冊(cè)8.1.4節(jié)。手冊(cè)上這么說(shuō)的:對(duì)于復(fù)用輸出功能,端口必須配置成復(fù)用功能輸出模式(推挽或開(kāi)漏)。)
2、配置GPIO工作模式。配置GPIO片選,由軟件管理(即自定義引腳),推挽輸出,上拉;
配置SPI引腳SCK、MOSI、MISO所用到的引腳為復(fù)用功能;GPIOX->CR1 GPIOX->ODR;
3、SPI設(shè)置工作模式。通過(guò)配置SPIx->CR1來(lái)設(shè)置SPI 的工作模式。配置工作模式為全雙工,主機(jī)模式,SCK閑時(shí)電平為高,第二個(gè)時(shí)鐘沿(上升沿)采樣數(shù)據(jù),內(nèi)部從機(jī)選擇軟件管理模式。設(shè)置SPI的時(shí)鐘頻率(最大18MHZ),設(shè)置數(shù)據(jù)格式(MSB在前還是LSB在后),內(nèi)部從機(jī)選擇設(shè)置為主機(jī)(置1)。
4、使能SPI,啟動(dòng)傳輸。
5,因?yàn)镾PI是同步輸入輸出的,在發(fā)送數(shù)據(jù)的時(shí)候已經(jīng)在接受數(shù)據(jù)。通過(guò)檢測(cè)SPIx->SR第一位的狀態(tài)來(lái)決定要進(jìn)行發(fā)送和接受數(shù)據(jù)。通過(guò)讀取SPIx->DR位的來(lái)發(fā)送和接受數(shù)據(jù)。
SPIx->SR寄存器圖:
SPIx->DR寄存器圖
#include "spi.h"
//SPI口初始化
//這里針是對(duì)SPI1的初始化
void SPI1_Init(void)
{
RCC->APB2ENR|=1<<2; //PORTA時(shí)鐘使能
RCC->APB2ENR|=1<<12; //SPI1時(shí)鐘使能
//這里只針對(duì)SPI口初始化
GPIOA->CRL&=0X000FFFFF;
GPIOA->CRL|=0XBBB00000;//PA5.6.7復(fù)用
GPIOA->ODR|=0X7<<5; //PA5.6.7上拉
//這里只針對(duì)SPI——CS口初始化
GPIOA->CRL&=0XFFFFF0FF;
GPIOA->CRL|=0X00000300;//PA2推挽輸出
GPIOA->ODR|=1<<2; //PA2上拉
SPI1->CR1|=0<<10;//全雙工模式
SPI1->CR1|=1<<9; //軟件nss管理
SPI1->CR1|=1<<8;
SPI1->CR1|=1<<2; //SPI主機(jī)
SPI1->CR1|=0<<11;//8bit數(shù)據(jù)格式
SPI1->CR1|=1<<1; //空閑模式下SCK為1 CPOL=1
SPI1->CR1|=1<<0; //數(shù)據(jù)采樣從第二個(gè)時(shí)間邊沿開(kāi)始,CPHA=1
SPI1->CR1|=7<<3; //Fsck=Fcpu/256
SPI1->CR1|=0<<7; //MSBfirst
SPI1->CR1|=1<<6; //SPI設(shè)備使能
SPI1_ReadWriteByte(0xff);//啟動(dòng)傳輸(主要作用:維持MOSI為高)
}
//SPI1 速度設(shè)置函數(shù)
//SpeedSet:0~7
//SPI速度=fAPB2/2^(SpeedSet+1)
//APB2時(shí)鐘一般為72Mhz
void SPI1_SetSpeed(u8 SpeedSet)
{
SpeedSet&=0X07; //限制范圍
SPI1->CR1&=0XFFC7;
SPI1->CR1|=SpeedSet<<3; //設(shè)置SPI1速度
SPI1->CR1|=1<<6; //SPI設(shè)備使能
}
//SPI1 讀寫(xiě)一個(gè)字節(jié)
//TxData:要寫(xiě)入的字節(jié)
//返回值:讀取到的字節(jié)
u8 SPI1_ReadWriteByte(u8 TxData)
{
u16 retry=0;
while((SPI1->SR&1<<1)==0)//等待發(fā)送區(qū)空
{
retry++;
if(retry>0XFFFE)return 0;
}
SPI1->DR=TxData; //發(fā)送一個(gè)byte
retry=0;
while((SPI1->SR&1<<0)==0) //等待接收完一個(gè)byte
{
retry++;
if(retry>0XFFFE)return 0;
}
return SPI1->DR; //返回收到的數(shù)據(jù)
}
上一篇:STM32 USART 接收任意長(zhǎng)度字符
下一篇:STM32模擬SPI接口程序
推薦閱讀
史海拾趣
DACHANG公司的起點(diǎn)可追溯到一次重要的技術(shù)突破。當(dāng)時(shí),公司創(chuàng)始人帶領(lǐng)團(tuán)隊(duì)經(jīng)過(guò)數(shù)月的艱苦研發(fā),成功開(kāi)發(fā)出了一款具有革命性意義的新型電子元件。這款元件不僅性能卓越,而且成本較低,極大地滿足了市場(chǎng)對(duì)于高性價(jià)比電子產(chǎn)品的需求。憑借這一技術(shù)突破,DACHANG公司迅速在市場(chǎng)上獲得了認(rèn)可,為公司后續(xù)的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
在電子行業(yè)的早期,一家名為“晶元科技”的Discrete Semiconductor Industries公司憑借其獨(dú)特的技術(shù)革新,成功地在市場(chǎng)中脫穎而出。該公司專注于研發(fā)新型半導(dǎo)體材料,通過(guò)不斷的實(shí)驗(yàn)和測(cè)試,最終成功開(kāi)發(fā)出了具有更高性能、更低功耗的半導(dǎo)體產(chǎn)品。這些產(chǎn)品迅速得到了市場(chǎng)的認(rèn)可,晶元科技也因此成為了半導(dǎo)體行業(yè)的領(lǐng)軍企業(yè)之一。隨著技術(shù)的不斷進(jìn)步,晶元科技不斷推出新產(chǎn)品,滿足市場(chǎng)對(duì)高性能半導(dǎo)體元件的需求,逐漸鞏固了其市場(chǎng)地位。
背景:為了進(jìn)一步擴(kuò)大市場(chǎng)份額和提高品牌影響力,振華新云積極開(kāi)展市場(chǎng)拓展和國(guó)際合作。
內(nèi)容:公司積極參加國(guó)內(nèi)外電子展會(huì)和論壇等活動(dòng),加強(qiáng)與國(guó)內(nèi)外客戶的溝通和交流。同時(shí),積極尋求與國(guó)際先進(jìn)企業(yè)的合作機(jī)會(huì),共同開(kāi)展技術(shù)研發(fā)和市場(chǎng)推廣等活動(dòng)。
成果:通過(guò)市場(chǎng)拓展和國(guó)際合作,振華新云的產(chǎn)品逐漸走向世界舞臺(tái),贏得了廣大客戶的信賴和好評(píng)。同時(shí),公司也積累了寶貴的國(guó)際化經(jīng)驗(yàn)和資源,為未來(lái)的國(guó)際化發(fā)展奠定了堅(jiān)實(shí)基礎(chǔ)。
作為一家有社會(huì)責(zé)任感的企業(yè),申風(fēng)(everanalog)公司始終關(guān)注社會(huì)發(fā)展和環(huán)境保護(hù)問(wèn)題。公司積極參與公益事業(yè)和環(huán)?;顒?dòng),致力于為社會(huì)做出積極貢獻(xiàn)。同時(shí),公司也注重可持續(xù)發(fā)展戰(zhàn)略的制定和實(shí)施,在生產(chǎn)經(jīng)營(yíng)過(guò)程中注重節(jié)能減排和資源循環(huán)利用等方面的工作。這些舉措不僅提升了公司的社會(huì)形象,也為公司的長(zhǎng)期發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
請(qǐng)注意,以上故事框架僅為示例,并未包含具體的細(xì)節(jié)和數(shù)據(jù)。如需了解更多關(guān)于申風(fēng)(everanalog)公司的具體信息和發(fā)展歷程,請(qǐng)查閱相關(guān)新聞報(bào)道或官方資料。
在激烈的市場(chǎng)競(jìng)爭(zhēng)中,CAROLCABLE公司深知技術(shù)創(chuàng)新是企業(yè)發(fā)展的核心動(dòng)力。因此,公司不斷加大研發(fā)投入,引進(jìn)先進(jìn)的生產(chǎn)設(shè)備和技術(shù)人才,推動(dòng)技術(shù)創(chuàng)新和產(chǎn)業(yè)升級(jí)。經(jīng)過(guò)多年的努力,CAROLCABLE成功研發(fā)出了一系列具有自主知識(shí)產(chǎn)權(quán)的高性能線纜產(chǎn)品,這些產(chǎn)品在傳輸速度、穩(wěn)定性和耐用性等方面均達(dá)到了行業(yè)領(lǐng)先水平。
隨著產(chǎn)品技術(shù)的不斷升級(jí),CAROLCABLE開(kāi)始積極拓展國(guó)內(nèi)外市場(chǎng)。公司參加了多個(gè)國(guó)際電子線纜展會(huì),與全球同行交流學(xué)習(xí),尋找合作機(jī)會(huì)。同時(shí),CAROLCABLE還加強(qiáng)與國(guó)內(nèi)大型電子企業(yè)的合作,為其提供定制化的線纜解決方案。這些舉措不僅為公司帶來(lái)了更多的商機(jī),也進(jìn)一步鞏固了CAROLCABLE在電子線纜行業(yè)的領(lǐng)先地位。
這兩個(gè)故事僅是對(duì)CAROLCABLE公司發(fā)展起來(lái)的簡(jiǎn)要描述,實(shí)際上,公司的成長(zhǎng)歷程中還有許多值得探討的細(xì)節(jié)和里程碑事件。如需了解更多關(guān)于CAROLCABLE公司的故事,建議查閱相關(guān)新聞報(bào)道或公司官方資料。
網(wǎng)上搜集到的一些資料 希望對(duì)大家有點(diǎn)用。。。 [ 本帖最后由 sideanson 于 2009-5-1 08:37 編輯 ]… 查看全部問(wèn)答∨ |
|
《FPGA三國(guó)志》(十)2008-11-13半導(dǎo)體公司-Xilinx Altera Actel Lattice股票行情 今天可以看到在金融風(fēng)暴下的4家FPGA制造商的股票行情。 以市值計(jì)算 … 查看全部問(wèn)答∨ |
|
請(qǐng)問(wèn)如何使用API方法RasDial,我的聲明為: Declare Function RasDial Lib \"coredll\" ( _ ByVal dialExtensions As Integer, _ ByVa ...… 查看全部問(wèn)答∨ |
遇到這樣的一個(gè)問(wèn)題,同樣的硬件環(huán)境,唯一不同的是2個(gè)CF存儲(chǔ)卡不一樣,用相同的內(nèi)核,為什么一個(gè)系統(tǒng)能正常運(yùn)行,而另一個(gè)卻無(wú)法跳轉(zhuǎn)?!停在JUMP TO 0X233344334這上面?請(qǐng)大蝦幫忙!… 查看全部問(wèn)答∨ |
ERROR:Pack:1107 - Unable to combine the following symbols into a single IOB 大家好,最近我在寫(xiě)一個(gè)數(shù)據(jù)儲(chǔ)存的VHDL代碼,當(dāng)我再給一個(gè)時(shí)鐘管腳分配位置時(shí),出現(xiàn)如下錯(cuò)誤,弄了好半天也沒(méi)弄明白,希望路過(guò)的高手能指點(diǎn)指點(diǎn),謝謝啦?。?!ERROR:Pack:1107 - Unable to combine the following symbols into a single IOB ...… 查看全部問(wèn)答∨ |
求代寫(xiě)一個(gè)PIC C程序。有報(bào)酬 急求一個(gè)PIC C程序用來(lái)控制洗衣機(jī)的,有能力,有技術(shù),有自信的。。聯(lián)系QQ781689,報(bào)酬好商量.急!??!… 查看全部問(wèn)答∨ |
請(qǐng)教一個(gè)匯編指令在C語(yǔ)言中得寫(xiě)法,急!!! 本帖最后由 dontium 于 2015-1-23 13:22 編輯 WRITA *(BL) *(u16*)(0xd555)=0xaa代替嗎,如果可以得話,編譯器怎么知道是寫(xiě)到IO空間得呢,請(qǐng)大家指點(diǎn)一下,感激ing … 查看全部問(wèn)答∨ |
各位高手,大家好,有誰(shuí)用過(guò)7S64 DEK這個(gè)開(kāi)發(fā)板嗎?ARM芯片是AT91SAM7S64,現(xiàn)在在這個(gè)開(kāi)發(fā)板弄了一個(gè)LCD1602,但是就是不顯示,各位高手麻煩給提點(diǎn)建議,謝謝,我是個(gè)ARM新手?!? 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 基于AVR EVK1105的移動(dòng)遠(yuǎn)程桌面多媒體設(shè)備
- 基于AVR EVK1105平臺(tái)的兒童伴睡寶方案設(shè)計(jì)
- 基于AVR的太陽(yáng)能高速公路智能電子顯示屏設(shè)計(jì)
- 基于MIPS32設(shè)計(jì)的智能電網(wǎng)家庭用電監(jiān)控系統(tǒng)
- 基于Cerebot MX4開(kāi)發(fā)板的家用智能監(jiān)控系統(tǒng)整體方案設(shè)計(jì)
- 確定運(yùn)算放大器輸出驅(qū)動(dòng)能力的方法分析
- 寵物狗無(wú)線感知交互系統(tǒng)軟硬件設(shè)計(jì)
- stm32晶振不起振的原因 stm32單片機(jī)的基本工作原理
- 從三個(gè)層次來(lái)介紹用于機(jī)器人主控板的設(shè)計(jì)思想
- 人工智能在汽車行業(yè)中的應(yīng)用
- 麥格納集成式艙內(nèi)感知系統(tǒng) 引領(lǐng)車輛安全創(chuàng)新
- 2025世界人工智能大會(huì)上的各種機(jī)器人
- 際上導(dǎo)航:高精度組合定位感知技術(shù)在智能輔助駕駛中的應(yīng)用
- 量產(chǎn)元年的人形機(jī)器人,要破局C端?
- 上半年賺304億元的寧德時(shí)代,給出固態(tài)電池量產(chǎn)時(shí)間表
- 新泗威車載后排航空座椅控制顯示器 | 申報(bào)2025第七屆金輯獎(jiǎng)最佳技術(shù)實(shí)踐應(yīng)用獎(jiǎng)
- L3 智駕,需要?dú)⑹旨?jí)座艙
- 2025動(dòng)力電池中場(chǎng)戰(zhàn)局,正力新能“三化策略”應(yīng)戰(zhàn)
- 智能手機(jī)共存解決方案協(xié)同合作使用共用天線
- #Micropython大作戰(zhàn)#第三彈:搶樓!大家一起來(lái)整理micropython資料
- NXP COG趣味有獎(jiǎng)問(wèn)答
- 是德科技有獎(jiǎng)直播:示波器在通用電子測(cè)量中的應(yīng)用和技巧
- 高性能 i.MX RT 處理器助力智能節(jié)點(diǎn)無(wú)需聯(lián)網(wǎng)實(shí)現(xiàn)機(jī)器學(xué)習(xí)
- 半導(dǎo)體品牌知名度問(wèn)卷調(diào)查
- 分享你的國(guó)賽經(jīng)驗(yàn),還有好禮相送!
- 2017年恩智浦物聯(lián)網(wǎng)設(shè)計(jì)大賽
- 有獎(jiǎng)直播:TI 的故事—— IC 創(chuàng)世紀(jì)
- 在CITE大會(huì)上智慧家庭上演巔峰對(duì)決
- 華為新智能手環(huán)B6:集藍(lán)牙耳機(jī)和運(yùn)動(dòng)健康為一體
- S900加持下的創(chuàng)維電視S81 Pro既是觀影神器也是游戲裝備
- 10家固態(tài)電池企業(yè)產(chǎn)業(yè)化追蹤
- 海信電視帶你走進(jìn)FIRST電影展,暢享夏日光影
- 除了不限量還有那些套路?細(xì)數(shù)運(yùn)營(yíng)商的那些深坑
- 前世界首富敢喝大便提煉的水 據(jù)說(shuō)不比桶裝水差
- “夜未央”影展落地成都 OPPO用手機(jī)講述夜色的溫柔
- 董明珠、魏銀倉(cāng)決裂 格力內(nèi)部人士稱接手后發(fā)現(xiàn)漏洞百出
- 一文讀懂OLED、ULED、QLED、GLED的區(qū)別