一、描述
兩塊STM32板子之間進(jìn)行SPI通訊,都使用的是SPI2。主機(jī)連續(xù)發(fā)送多組數(shù)據(jù)(數(shù)據(jù)的格式為半字,即16位),從機(jī)采用SPI2中斷方式接受主機(jī)發(fā)過來的多組數(shù)據(jù)。
針對(duì)從機(jī)中斷接受方法我嘗試了兩種方案:
方案一:從機(jī)每接收主機(jī)發(fā)來的一組數(shù)據(jù)就進(jìn)入中斷一次,即主機(jī)發(fā)來幾組數(shù)據(jù)從機(jī)就進(jìn)入幾次中斷。
方案二:僅當(dāng)主機(jī)發(fā)來第一組數(shù)據(jù)時(shí),從機(jī)才觸發(fā)一次中斷,然后關(guān)閉中斷,以循環(huán)接受的方式接受主機(jī)發(fā)過來的剩下幾組數(shù)據(jù),當(dāng)所有數(shù)據(jù)接受完后,再打開從機(jī)的接受中斷。
二、程序
因?yàn)閮煞N方案的主機(jī)程序是一樣的,如下:
uint16_t ADC_ConvertedValueLocal[SPI2_TxDataLength];
uint8_t i;
for(i = 0;i < SPI2_TxDataLength;i++)
{
SPI_I2S_SendData(SPI2 , ADC_ConvertedValueLocal[i]);
delay_us(10);//自己寫的延時(shí)函數(shù)
}
從機(jī)程序:
方案一的如下:
uint16_t SPI2_RxBuf[SPI2_RxDataLength];
uint8_t i;
void SPI2_IRQHandler(void)
{
if (SPI_I2S_GetITStatus(SPI2, SPI_I2S_IT_RXNE) == SET)
{
SPI_I2S_ClearITPendingBit( SPI2 , SPI_I2S_IT_RXNE );
for(i = 0;i < SPI2_RxDataLength;i++)
{
while(SPI_I2S_GetFlagStatus(SPI2 , SPI_I2S_FLAG_RXNE)==RESET );
SPI2_RxBuf[i] = SPI_I2S_ReceiveData(SPI2);
}
}
}
方案二的如下:
uint16_t SPI2_RxBuf[SPI2_RxDataLength];
uint8_t i;
void SPI2_IRQHandler(void)
{
if (SPI_I2S_GetITStatus(SPI2, SPI_I2S_IT_RXNE) == SET)
{
SPI_I2S_ClearITPendingBit( SPI2 , SPI_I2S_IT_RXNE );
SPI_I2S_ITConfig( SPI2, SPI_I2S_IT_RXNE, DISABLE );//關(guān)閉中斷
for(i = 0;i < SPI2_RxDataLength;i++)
{
while(SPI_I2S_GetFlagStatus(SPI2 , SPI_I2S_FLAG_RXNE)==RESET );//等待接受緩沖器空
SPI2_RxBuf[i] = SPI_I2S_ReceiveData(SPI2);
}
SPI_I2S_ITConfig( SPI2, SPI_I2S_IT_RXNE, ENABLE );//開啟中斷
}
}
三、分析
從兩個(gè)從機(jī)的程序來看,差別就在于是否關(guān)閉開啟中斷。但是實(shí)際工作起來差別就大了,若用方案一會(huì)出現(xiàn)這樣的問題,主機(jī)連續(xù)的發(fā)數(shù)時(shí),從機(jī)會(huì)不斷的進(jìn)入中斷,此時(shí)從機(jī)會(huì)因?yàn)檫M(jìn)入中斷頻繁而導(dǎo)致數(shù)據(jù)出錯(cuò),實(shí)際證明也是如此。
而方案二,采用的是主機(jī)的第一組數(shù)據(jù)觸發(fā)中斷,當(dāng)進(jìn)入中斷后將中斷暫時(shí)關(guān)閉,將主機(jī)發(fā)過來的數(shù)依次存好后,再打開中斷,等待主機(jī)傳來下一批數(shù)據(jù)。方案二另外還有兩點(diǎn)需要注意:
1、必須主從之間商量好,你發(fā)幾組數(shù)據(jù),我接幾組數(shù)據(jù)。就是說數(shù)據(jù)的個(gè)數(shù)不能隨機(jī)變。
2、注意到主機(jī)發(fā)送程序中那句延時(shí)語句,主機(jī)發(fā)送兩個(gè)數(shù)據(jù)之間要有一定的延時(shí),不然從機(jī)就會(huì)死在while(SPI_I2S_GetFlagStatus(SPI2 , SPI_I2S_FLAG_RXNE)==RESET );這條語句中,原因不知。
上一篇:STM32單片機(jī)IO中斷實(shí)現(xiàn)步驟
下一篇:stm32f429引腳復(fù)用
推薦閱讀
史海拾趣
- 創(chuàng)業(yè)初期:
- 描述Clulite公司的創(chuàng)始人或核心團(tuán)隊(duì)如何識(shí)別電子行業(yè)中的某個(gè)市場機(jī)遇。
- 講述他們是如何籌集初始資金,設(shè)立公司,并開發(fā)出第一款產(chǎn)品或解決方案的。
- 可以提及公司在初創(chuàng)階段面臨的挑戰(zhàn),如技術(shù)難題、市場競爭等。
- 技術(shù)創(chuàng)新:
- 講述Clulite如何通過研發(fā)創(chuàng)新,推出了一款顛覆性的產(chǎn)品或技術(shù),從而獲得了市場認(rèn)可。
- 詳細(xì)描述這一創(chuàng)新過程,包括研發(fā)團(tuán)隊(duì)的努力、關(guān)鍵技術(shù)的突破等。
- 提及這一創(chuàng)新如何幫助公司在市場上取得了競爭優(yōu)勢(shì)。
- 市場拓展:
- 描述Clulite如何逐步擴(kuò)大市場份額,從地區(qū)市場走向全國乃至國際市場。
- 可以講述公司如何建立銷售網(wǎng)絡(luò)、與合作伙伴建立合作關(guān)系,以及參與行業(yè)展會(huì)等活動(dòng)來推廣品牌和產(chǎn)品。
- 提及公司在市場拓展過程中遇到的挑戰(zhàn)和應(yīng)對(duì)策略。
- 品質(zhì)管理:
- 講述Clulite如何注重產(chǎn)品質(zhì)量和客戶體驗(yàn),通過嚴(yán)格的質(zhì)量控制流程來提升產(chǎn)品可靠性。
- 描述公司如何建立完善的售后服務(wù)體系,為客戶提供及時(shí)、專業(yè)的支持。
- 提及這些舉措如何幫助公司贏得了客戶的信任和口碑。
- 可持續(xù)發(fā)展:
- 講述Clulite如何關(guān)注環(huán)境保護(hù)和社會(huì)責(zé)任,推動(dòng)公司的可持續(xù)發(fā)展。
- 描述公司如何采取環(huán)保措施,減少生產(chǎn)過程中的污染排放。
- 提及公司如何參與社會(huì)公益事業(yè),回饋社會(huì)。
請(qǐng)注意,這些故事需要根據(jù)Clulite公司的實(shí)際情況進(jìn)行調(diào)整和補(bǔ)充。如果你需要更具體的內(nèi)容,建議查閱Clulite公司的官方網(wǎng)站、新聞報(bào)道或行業(yè)分析報(bào)告,以獲取更詳細(xì)的信息和數(shù)據(jù)。
東晨(DC)公司深知人才是企業(yè)發(fā)展的核心動(dòng)力。因此,公司高度重視人才培養(yǎng)和引進(jìn)工作。公司建立了完善的培訓(xùn)體系,為員工提供全面的職業(yè)發(fā)展和技能培訓(xùn)。同時(shí),公司還積極引進(jìn)優(yōu)秀人才,通過股權(quán)激勵(lì)等措施留住人才。這些措施為公司的持續(xù)發(fā)展提供了有力的人才保障。
在電子行業(yè)中,產(chǎn)品質(zhì)量是企業(yè)生存和發(fā)展的關(guān)鍵。CDI-DIODE公司始終堅(jiān)持品質(zhì)至上的原則,從原材料采購到生產(chǎn)流程控制,再到產(chǎn)品檢測(cè),都嚴(yán)格把關(guān)。這種對(duì)品質(zhì)的執(zhí)著追求贏得了客戶的信任和口碑,使公司在激烈的市場競爭中脫穎而出。
隨著市場競爭的加劇,CDI-DIODE公司意識(shí)到傳統(tǒng)的營銷方式已經(jīng)無法滿足市場需求。于是,公司開始嘗試新的營銷策略,如線上推廣、社交媒體營銷等。這些創(chuàng)新的營銷方式不僅提升了公司的知名度,也增強(qiáng)了與客戶的互動(dòng)和聯(lián)系,進(jìn)一步提升了品牌影響力。
隨著公司的發(fā)展,廣東長利光電逐漸意識(shí)到質(zhì)量管理的重要性。為了提升產(chǎn)品質(zhì)量,公司決定引進(jìn)ISO9001質(zhì)量管理體系。在實(shí)施過程中,公司對(duì)生產(chǎn)流程進(jìn)行了全面的梳理和優(yōu)化,確保了每一個(gè)生產(chǎn)環(huán)節(jié)的嚴(yán)格控制。這一舉措不僅提升了產(chǎn)品的合格率,還為公司贏得了更多的客戶信任和市場份額。
隨著環(huán)保意識(shí)的日益增強(qiáng),電子行業(yè)對(duì)環(huán)保的要求也越來越高。EQCOLOGIC公司積極響應(yīng)環(huán)保號(hào)召,將環(huán)保理念貫穿于產(chǎn)品研發(fā)、生產(chǎn)和銷售的各個(gè)環(huán)節(jié)。公司采用環(huán)保的生產(chǎn)工藝和材料,減少污染物的排放;同時(shí),還開展了一系列環(huán)保宣傳活動(dòng),提高員工和消費(fèi)者的環(huán)保意識(shí)。這些舉措不僅提升了公司的社會(huì)形象,也為公司的可持續(xù)發(fā)展奠定了基礎(chǔ)。
在Keil C51 uVision3 中調(diào)試w77E58如何設(shè)置才能使用片上的1K外部存貯器呀? 偉福V8仿真調(diào)試Winbond77E58不能正常使用片上1K外部存貯器的問題: 我用偉福V8/L仿真調(diào)試Winbond77E58板子, W77E58有片上1K外部存貯器,我不知是我的編譯環(huán)境設(shè)置不對(duì), 還是偉福不能仿真片上1K外部存貯器?在下面的程序中,將 int xdata i ...… 查看全部問答∨ |
|
嵌入式程序運(yùn)行時(shí),硬件CPU空閑多少算正常狀態(tài)? 嵌入式程序運(yùn)行時(shí),硬件CPU空閑多少算正常狀態(tài)? ppc MPC8541 VxWorks… 查看全部問答∨ |
|
想在ucosII上開發(fā)一款pdf查看程序(平臺(tái)君正 Xburst MIPS jz4740),現(xiàn)有Foxit Embedded PDF SDK可惜不免費(fèi)?。。。。。。。?! 總不能從頭開發(fā)吧,難度太了點(diǎn)吧?。】捎忻赓M(fèi)的庫?。?!推薦一個(gè)??!… 查看全部問答∨ |
vs2005 編譯發(fā)布成功,但彈出“unable to start debugging”這個(gè)問題怎么解決呢?先感謝各位回帖者,謝謝… 查看全部問答∨ |
應(yīng)屆畢業(yè)生如何進(jìn)軍華為? 有沒有在華為工作的前輩? 請(qǐng)指點(diǎn)指點(diǎn),萬分感謝?。。?!… 查看全部問答∨ |
【求助】74HC165的操作,只能控制一個(gè)按鍵,其他的控制不了,搞不明白 #define PL P2_3//SHIFT/LOAD引腳 #define CLOCK P2_4 #define SETBSC P2_5//OUTPUT QH引腳 read74hc165m() {uchar basic,c; PL=1; nop(); PL=0;//使能端為低電平時(shí)8位數(shù)據(jù)進(jìn)入寄存器 nop(); PL=1;//高電平數(shù)據(jù)鎖存,同時(shí)165數(shù)據(jù)自動(dòng) ...… 查看全部問答∨ |
個(gè)人思路是這樣的: 可家用也可探險(xiǎn)用。 加防水防塵防摔用於潮濕水等惡劣環(huán)境 可使用1~3個(gè)LED,以便節(jié)能。即使用調(diào)光也可以。但電池電壓降到9伏特以下呢?充分利用電池。低電時(shí)可手搖發(fā)電。 &n ...… 查看全部問答∨ |
三 書包小幫手 它的功能簡單,卻有很大的用處。我們大學(xué)生常常忘記星期幾上什么課,幾點(diǎn)上,教室在哪兒,老師的名字,電話等。它就像一個(gè)學(xué)習(xí)小管家,功能簡單,外形小巧,可以放進(jìn)書包上的掛飾,娃娃等,它采用防水功能。 它有個(gè)顯示 ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- iTOP-i.MX6開發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設(shè)置開機(jī)自啟動(dòng)
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測(cè)試
- 迅為IMX8MM開發(fā)板Linux系統(tǒng)修改默認(rèn)屏幕
- 意法半導(dǎo)體推出創(chuàng)新的、帶有可改變存儲(chǔ)配置存儲(chǔ)器的車規(guī)微控制器解決方案
- 若虛假宣傳自動(dòng)駕駛致嚴(yán)重后果,責(zé)任人可面臨 2 年以下有期徒刑或拘役
- 安富利推出S32M2智能EOP控制器解決方案
- 人形機(jī)器人 3D 視覺路線之爭:激光雷達(dá)、雙目和 3D - ToF 誰更勝一籌?
- Akamai成為首家提供云端VPU的服務(wù)商
- 新型水性電池能穩(wěn)定循環(huán)兩千次,有望用于電動(dòng)汽車等領(lǐng)域
- 如何為工業(yè)物聯(lián)網(wǎng)選擇最節(jié)能的通信方案?
- 國數(shù)集聯(lián)加入阿里云發(fā)起的ALink,全面布局GPU Scale-Up互聯(lián)
- HBM4 內(nèi)存正式標(biāo)準(zhǔn)化,JEDEC 發(fā)布 JESD270-4 規(guī)范
- 意法半導(dǎo)體披露公司全球計(jì)劃細(xì)節(jié),重塑制造布局和調(diào)整全球成本基數(shù)
- 福祿克首款熱成像萬用表Fluke-279FC等你來嘗鮮!曬心得享好禮嘍!
- “TI 中國大學(xué)計(jì)劃” 知多少——答題贏好禮!
- #最能打國產(chǎn)芯#能打入汽車電子這片地的國產(chǎn)芯,有多少啦?
- 【有獎(jiǎng)活動(dòng)】與春天有個(gè)約會(huì)--曬照片
- 【說出你的故事】跨平臺(tái)轉(zhuǎn)換——你做?還是不做?
- WEBENCH輕松注冊(cè),盡享精彩好禮!
- 2023 Digikey KOL 視頻系列第一期
- 【爆款推薦】4路輸出、超簡約電源開發(fā)板,只需1塊錢!
- 基于USB PD受電協(xié)議芯片CH224 DIY創(chuàng)意秀
- 如何“配齊”脈沖負(fù)載的電源設(shè)計(jì)需求
- 如何提高你的軟件設(shè)計(jì)水平?---《軟件可靠性工程》
- sp6LX9的使用進(jìn)行中
- 請(qǐng)問I/O端口連接文件進(jìn)行仿真得不到數(shù)據(jù)的問題
- 定時(shí)器a不計(jì)數(shù)是什么原因
- 求哪位仁兄給個(gè)PIC單片的下載地址啊
- MSP430寄存器大全(新手必備)
- 求7*7鍵盤掃描程序
- MAXQ3120混合信號(hào)微控制器的應(yīng)用案例
- sdio驅(qū)動(dòng)sd卡,fatfs文件系統(tǒng),存儲(chǔ)文件死機(jī),SD卡格式變?yōu)閞aw
- 圖解測(cè)量電子電路設(shè)計(jì)(濾波器篇)—超實(shí)用的書