引腳介紹
SPI 包含 4 條總線,SPI 總線包含 4 條總線,分別為
——SS 、SCK、MOSI、MISO。它們的作用介紹如下 :
1)SS ( Slave Select):片選信號線,當有多個 SPI 設備與 MCU 相連時,每個設備
的這個片選信號線是與 MCU 單獨的引腳相連的,而其他的 SCK、MOSI、MISO線則為多個設備并聯到相同的 SPI 總線上,見圖 15- 1。當 SS 信號線為低電平時,片選有效,開始SPI 通信。
2)SCK (Serial Clock):時鐘信號線,由主通信設備產生,不同的設備支持的時鐘
頻率不一樣,如 STM32 的 SPI 時鐘頻率最大為 f PCLK /2。
3)MOSI (MasterOutput, Slave Input):主設備輸出 / 從設備輸入引腳。主機的數據
從這條信號線輸出,從機由這條信號線讀入數據,即這條線上數據的方向為主機到從機。
4)miso主設備輸入/ 從設備輸出引腳。主機從這條信號線讀入數據,從機的數據則由這條信號線輸出,即在這條線上數據的方向為從機到主機。
GPIO配置
硬件連接
編程要點
初始化了 SPI1 復用到的 GPIO 引腳,啟動了 GPIO 及 SPI1 外設
的時鐘,并初始化了 SPI 的模式
1)SPI_Mode :STM32 的 SPI 設 備 可 以 工 作 于 主 機 模 式(SPI_Mode_Master)
或 從 機 模 式(SPI_Mode_Slave),這兩個模式的最大區別為 SPI 的 SCK 信號線的時序,SCK 的時序是由通信中的主機產生的。若被配置為從機模式,STM32 的 SPI 模塊將接受外來的 SCK 信號。本實驗中 STM32 作為 SPI 通信中的主機,我們向這個成員賦值為主機模式(SPI_Mode_Master)。
2)SPI_DataSize :這個成員可以選擇 SPI 每次通信的數據大小(稱為數據幀)為8 位
還是 16 位。從 Flash 的數據手冊我們可以查到,本 Flash 通信的數據幀大小為 8 位,
STM32 的 SPI 模塊設置要與之相同。
3)SPI_CPOL 和 SPI_CPHA :這 兩 個 成 員 即 配 置 SPI 的 時 鐘 極 性(CPOL) 和
時 鐘 相 位(CPHA),這兩個配置影響到 SPI 的通信模式,該設置要符合將要互相通信的設備的要求。CPOL 分別可以取 SPI_CPOL_High(SPI 通信空閑時 SCK 為高電平)和
SPI_CPOL_Low(SPI 通信空閑時 SCK 為低電平)。CPHA則可以取 SPI_CPHA_1Edge
(在 SCK 的奇數邊沿采集數據) 和 SPI_CPHA_2Edge (在 SCK 的偶數邊沿采集數
據) 。
查閱本 Flash 的使用手冊,見圖 15- 6。可以了解到這個 Flash 支持以 SPI 的模式 0 和模式 3通信。即在 SPI 空閑時,SCK 為低電平,奇數邊沿采樣(模式 0);也可以在 SPI 空閑時,SCK 為高電平,偶數邊沿采樣(模式 3)。即無論 CPOL 的狀態是什么,Flash的數據采樣時刻為 SCK 的上升沿。我們在本實驗配置使用它的模式 3,即把 CPOL 賦值為
SPI_CPOL_High ;
2)4 ) SPI_NSS : 本 成 員 配 置 NSS 引 腳 的 使 用 模 式 , 可 以 選 擇 為 硬 件 模 式(SPI_NSS_Hard )與軟件模式(SPI_NSS_Soft),在硬件模式中的 SPI 片選信號由硬件自動產生,而軟件模式則需要我們親自把相應的 GPIO 端口拉高或置低產生非片選和片選信
號。如果外界條件允許,硬件模式還會自動將 STM32 的 SPI 設置為主機。本實驗使用軟件模式,向這個成員賦值為 SPI_NSS_Soft 。
5)SPI_BaudRatePrescaler :本成員設置波特率分頻值,分頻后的時鐘即為 SPI 的 SCK
信號線的時鐘頻率。這個成員參數可設置為 f PCLK 的 2、4、6、8、16、32、64、128、
256 分頻。本實驗向這個成員賦值為 SPI_BaudRatePrescaler_4,即 f PCLK 的 4 分頻。
6)SPI_FirstBit :所有串行的通信協議都會有 MSB 先行(高位數據在前)還是 LSB
先行(低位數據在前)的問題,而 STM32 的 SPI 模塊可以通過這個結構體成員,對這個特性 編 程 控 制 。 據 Flash 的 通 信 時 序 , 我 們 向 這 個 成 員 賦 值 為 MSB 先 行
(SPI_FirstBit_MSB)。
7)SPI_CRCPolynomial :這是 SPI 的 CRC 校驗中的多項式,若我們使用 CRC 校驗
時,就使用這個成員的參數(多項式)來計算 CRC 的值。由于本實驗的 Flash 不支持 CRC校驗,所以我們向這個結構體成員賦值為7 實際上是沒有意義的。
配置完這些結構體成員后,我們要調用SPI_Init() 函數把這些參數寫入寄存器中,實現
SPI 的初始化,然后調用
上一篇:STM32F10XX中SPI的DMA發送數據
下一篇:stm32 spi從模式配置解答
推薦閱讀
史海拾趣
隨著技術實力的不斷提升,金宇半導體開始積極拓展國內外市場。公司制定了詳細的市場拓展計劃,通過參加國際電子展、舉辦技術研討會等方式,加強與客戶的溝通和交流。同時,金宇半導體還加大了品牌建設的力度,通過廣告宣傳、媒體合作等多種方式提升品牌知名度和美譽度。這些努力使得金宇半導體的市場份額逐年攀升,品牌影響力也日益增強。
隨著下游電子產品的更新換代和手機的快速普及,力芯微公司敏銳地捕捉到了這一市場機遇。公司及時調整研發方向,推出一系列低壓低功耗的電源類產品,成功進入手機市場。這一轉型不僅使公司實現了業務的多元化,也為公司帶來了新的增長點。
70年代,全球電子產品熱潮興起,金山工業決定進軍這一領域。公司推出了堿性和氧化的銀鈕型電池,這些產品廣泛應用于電子手表、計算機等小型電子設備中。這一戰略轉型不僅豐富了超霸電池的產品線,也進一步提升了其在電子行業的知名度。隨著技術的不斷積累,超霸電池逐漸在市場中占據了一席之地。
近年來,隨著人工智能、物聯網等新興技術的快速發展,半導體行業正面臨著前所未有的變革。Crystal Semiconductor Corp積極應對這一挑戰,加大了對新興技術的研發投入,推出了一系列適應市場需求的新產品。同時,公司還加強了與上下游企業的合作,共同推動產業鏈的發展。
隨著產品質量的提升和技術創新的積累,Crystal Semiconductor Corp開始積極拓展國內外市場。公司加強了與全球知名企業的合作,通過參加國際展會、舉辦技術研討會等方式提升品牌知名度。同時,公司還注重客戶服務,積極解決客戶在使用過程中遇到的問題,贏得了良好的口碑。
隨著市場競爭的加劇,Crystal Semiconductor Corp意識到只有不斷創新才能在行業中立足。于是,公司加大了對研發的投入,引進了一批高端人才。經過數年的努力,公司成功開發出了一種新型的半導體制程工藝,大幅提高了晶體管的性能和可靠性。這一創新不僅為公司帶來了豐厚的利潤,也為整個半導體行業樹立了新的標桿。
超穩定版Protel99se加自動漢化包全集下載http://www.vip998.com/Soft/ShowSoftDown.asp?UrlID=1&SoftID=50 超穩定版Protel99se加自動漢化包全集下載: 站內有幾個protel99SE的版本,要選哪個最棒呢,下這個啦,速度快,而且效果超級棒!!~ 密碼 ...… 查看全部問答∨ |
|
1.沒有人強迫你,是你志愿選擇了symbian os. 2.這是最重要的問題,開發symbian 平臺的軟件到底有沒有前途呢?每個symbian os的開發者都在考慮這個的問題,答案很簡單,問問市場就知道了,只要你做的是精品,肯定會得到認可的。全球每年生產幾億部 ...… 查看全部問答∨ |
隨著技術的發展,提高車上生活的娛樂性成為一種新的時尚,越來越多的購車者開始注意汽車的娛樂裝備,期望出現新的產品能把更多的娛樂方式帶到車上,讓人們在車上度過的每一段時光都留下了美好的回憶。車載DVD是近年來開始流行的汽車娛樂裝備,作為 ...… 查看全部問答∨ |
正激式開關電源變壓器初、次級線圈匝數比的計算 開關電源原理與設計(連載17) 1-6-3-2-2.變壓器初、次級線圈匝數比的計算 正激式開關電源輸出電壓一般是脈動直流的平均值,而脈動直流的平均值與控制開關的占空比有關,因此,在計算正激式開關電源變壓器初、次級線圈的匝數比之前,首先要確定控制開關的占空比D,把占空比D確 ...… 查看全部問答∨ |
開發板(學習板),個人認為是提供給用戶進行學習和二次開發的,既然是提供給用戶第二次開發的,我想應該提供電路板原理圖和PCB圖(提供PROTEL或其他設計圖和PDF 2個版本),提供開發源程序和接口源程序,其資料應該是比較嚴密的。 ...… 查看全部問答∨ |
ATMEL9261在pb5.0下串口調試bootloader的問題 各位大俠好! 小弟最近正在調試9261在pb5.0下的bootloader,由于我的板子上沒有以太網,所以只好選擇用串口下載和調試.我已經在pb5.0里的Target->connectivity options->kernel service map設為:Target device->CE device,Download->Serial(C ...… 查看全部問答∨ |
wince6下,怎么才能使S3C6410運行到667的頻率呢,改怎么配置,在“S3C6410_SEC_V1\\OAL\\INC\\soc_cfg.h”中需要修改哪些? 當我調整到666時,直接編譯不通,在“dvs.h”跳出錯誤。沒有“#define TARGET_ARM_CLK CLK_667MHz”,我自 ...… 查看全部問答∨ |
一、畢業論文的要求和內容 要求: 1. 掌握串行通信的基本原理。 2. 掌握RS-232的基本結構和特性。 3. 掌握8250的工作特性。 4. 掌握串行通信的硬件連接方法。 5. 查找與本課題相關的一篇外文資料,并翻譯成中文。 6. 小組共同討論,每周向指 ...… 查看全部問答∨ |
CLK-IN放在一個普通腳上,出現錯誤A clock IOB / clock component pair have been found that are not placed at an optimal clock IOB /下面是代碼:module clk_test(clk_in,h_in,v_in,clk_out,h_out); input clk_in; i ...… 查看全部問答∨ |