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

歷史上的今天

今天是:2025年04月11日(星期五)

正在發生

2019年04月11日 | spi實驗:接收電路與發送電路的自環測試

發布者:MusicLover123 來源: eefocus關鍵字:spi  接收電路  發送電路  自環測試 手機看文章 掃描二維碼
隨時隨地手機看文章

SPI簡介:


SPI,是英語Serial Peripheral Interface的縮寫,顧名思義就是串行外圍設備接口。SPI,是一種高速的,全雙工,同步的通信總線,并且在芯片的管腳上只占用四根線。


SPI 規定了兩個 SPI 設備之間通信必須由主設備 (Master) 來控制次設備 (Slave). 一個 Master 設備可以通過提供 Clock 以及對 Slave 設備進行片選 (Slave Select) 來控制多個 Slave 設備, SPI 協議還規定 Slave 設備的 Clock 由 Master 設備通過 SCK 管腳提供給 Slave 設備, Slave 設備本身不能產生或控制 Clock, 沒有 Clock 則 Slave 設備不能正常工作。


SPI總線是Motorola公司推出的三線同步接口,同步串行3線方式進行通信:一條時鐘線SCK,一條數據輸入線MOSI,一條數據輸出線MISO;用于 CPU與各種外圍器件進行全雙工、同步串行通訊。


SPI相關的縮寫或說法:


SPI的極性Polarity和相位Phase,最常見的寫法是CPOL和CPHA,不過也有一些其他寫法,簡單總結如下:


(1) CKPOL (Clock Polarity) = CPOL = POL = Polarity = (時鐘)極性


(2) CKPHA (Clock Phase) = CPHA = PHA = Phase = (時鐘)相位


(3) SCK=SCLK=SPI的時鐘


(4) Edge=邊沿,即時鐘電平變化的時刻,即上升沿(rising edge)或者下降沿(falling edge)


對于一個時鐘周期內,有兩個edge,分別稱為:


Leading edge=前一個邊沿=第一個邊沿,對于開始電壓是1,那么就是1變成0的時候,對于開始電壓是0,那么就是0變成1的時候;


Trailing edge=后一個邊沿=第二個邊沿,對于開始電壓是1,那么就是0變成1的時候(即在第一次1變成0之后,才可能有后面的0變成1),對于開始電壓是0,那么就是1變成0的時候;


本實驗默認設置CPOL=0,CPHA=0。


實驗要求:


按照SPI原理設計一個接收電路與一個發送電路,并作為從機進行自環測試。


實驗過程:


SPI的特點即外部從機串行輸入輸出數據,而主機可以并行讀取寫入數據。一個SPI從機必需四個輸入信號:sck——串行同步時鐘;ncs——片選信號;mosi——主機輸出從機輸入信號;miso——主機輸入從機輸出信號。同時還需要一個clk時鐘信號和一個rst復位信號


本實驗共分為三個部分:myspi從機模塊,bcd2led輸出數據顯示模塊,sck_counter串行同步脈沖生成模塊。


1.從機模塊:


從機模塊又分為三個部分:sck跳變沿檢測部分,spi接收部分,spi發送部分。


sck跳變沿檢測部分:使用寄存器記錄SCK狀態,由狀態判斷SCK是否出現跳變沿。代碼截圖如下:



spi接收電路部分:當復位信號無效、片選信號有效且出現SCK上跳沿時,接收電路進入狀態一,接收寄存器(8位)通過左移方式存入mosi數據,存滿8位后進入狀態二,將接收標志信號置為1,等待4個時鐘周期后進入狀態三,將接收標志信號清零并返回狀態一。具體代碼截圖如下:



spi發送電路部分:當接收標志信號置1時發送標志信號也置為1。當復位信號無效、片選信號有效且發送標志信號為1時,發送電路進入狀態一,發送寄存器從數據緩存區中讀出8位數據進入狀態二,如果出現出現SCK上跳沿則從發送寄存器中取出最高位作為miso發送,進入狀態三,如果出現出現SCK下跳沿則將發送寄存器左移一位,最低位寫入0,直至發送寄存器中8位數據全部發送完畢,進入狀態四,將發送標志信號和miso信號都置為0,返回狀態一。具體代碼截圖如下:



2. 輸出數據顯示模塊:


將從機模塊輸出的miso信號傳入數據顯示模塊中,若miso為1則時七段液晶顯示管顯示數字1,若miso為0則顯示數字0,。具體代碼截圖如下:



3.sck脈沖生成模塊:


每10次clk時鐘周期使SCK信號跳反一次,該sck信號作為從機模塊的sck輸入信號。具體實現代碼截圖如下:



代碼編寫完成后管腳分配截圖如下:



把代碼下載DE0開發板后置SW0高電平,SW1低電平,SW2控制輸入數據,手動按BUTTON28次后存入對應8位數據,再手動按8次對應顯示上次輸入的8位數據。


關鍵字:spi  接收電路  發送電路  自環測試 引用地址:spi實驗:接收電路與發送電路的自環測試

上一篇:模擬SPI實現和調試流程
下一篇:stm32的斷言機制(assert)的理解

推薦閱讀

  據悉,AT&T迫使聯邦通信委員會(FCC)在3.5GHz頻段內申請擴大許可范圍,因為較小的許可范圍會增加部署成本。下面就隨網絡通信小編一起來了解一下相關內容吧。  在提交文件時,AT&T和基礎設施提供商康普解釋說要充分覆蓋小型許可區域的邊界,運營商將不得不降低其傳輸功率,從而部署更多的小區站點以覆蓋相同的空間。這意味著設備和維護成本大幅增加,...
根據世界半導體貿易統計協會(WSTS) 最新公布報告顯示,半導體銷售額在今年2 月份進一步下滑,所有主要類別的芯片銷售,都呈現連續下降和年增率下降的趨勢。 在經過了三年來的破紀錄成長,芯片銷售額自今年一月開始急遽下降,這是自2016 年來七月首次從年初開始持續下跌。 根據WSTS的數據,就過去這三個月平均值相較下,2月半導體銷售的下滑至329億美元,月...
1.學習Gpio原理圖led與開發板的接線圖,總結:nled1—–>GPF4nled2—–>GPF5nled4—–>GPF62. 寄存器這里用到兩個寄存器,一個是端口控制寄存器:GPACON-GPJCON,還有一個寄存器是端口數據寄存器GPADAT-GPJDAT這里可以看出端口控制寄存器的地址是:0x56000000端口數據寄存器的地址是:0x56000004所以我們只需要配置這兩個寄存器對應的LED位就可以實現控制le...
4月11日,第九屆中國電子信息博覽會(CITE2021)在深圳會展中心圓滿收官。本屆博覽會以“創新驅動高質量發展”為主題,現場有超1500家參展商,發布了近萬件新產品、新技術,全方位、多角度展示了電子信息產業的最新發展成果。同時,博覽會期間還舉辦了近100場同期活動,吸引了超過10萬名專業觀眾到場參觀,500多萬觀眾網上觀展,共有500多家媒體參與了宣傳報...

史海拾趣

問答坊 | AI 解惑

快來看,NEC贈送芯片的資料

本帖最后由 paulhyde 于 2014-9-15 09:09 編輯 比賽時會用到的 [ 本帖最后由 燕子寶貝 于 2009-9-1 21:01 編輯 ]  …

查看全部問答∨

各位版主幫我修個程序,,十萬著急,,對熟悉人很簡單

我附件的程序有個問題:   如果修改了參數不按SET突然斷電就保存不了,,要修改為只要修改了參數不按SET也可以自動保存   把哪個地方修了發個說明過來,...最好發個修改后完整的版本和完整版本哪里有修改的說明過來....麻煩了,,,  …

查看全部問答∨

usb問題

請問大哥們。。usb的檢測是怎么一回事呢。。。。我怎么知道他插入了呢,CE里面的代碼在哪里呢。。…

查看全部問答∨

MSP430芯片SPI的驅動程序,存儲器用的芯片AT45DB161D 編譯時找不到頭文件include "AT45DB161D.h"

我寫的程序是關于MSP430的SPI驅動,實現數據的簡單讀寫,但在編譯時總提示  找不到頭文件 include "AT45DB161D.h"的源文件,下面是我寫的程序: #include <msp430x16x.h> #include "AT45DB161D.h" #define NOP() { _nop_ ...…

查看全部問答∨

問個小問題~~

各位大蝦......弱弱的問下.... 現在要招嵌入式開發的公司是不是都不要新手的呢? 偶想轉..不知道有沒有公司要新手的...一個人自學好難啊~~…

查看全部問答∨

.Net Compact Framework 1.1中有沒有獲得當前線程ID的方法?

.Net Compact Framework 1.1中有沒有獲得當前線程ID的方法? 完全版中倒是有AppDomain.GetCurrentThreadID() coredll.dll中有沒有我也不知道。 哪位大蝦幫幫我啊~…

查看全部問答∨

線路的尖峰毛刺造成FPGA工作不正常

  使用EP2C35 FPGA 設計了多個串口工作,出現了幾個問題. 第一次, 由于內核電源1.2V 供電不是完整平面,而是帶狀線供電,EP2C35 在代碼容量大的情況下,而且輸入FPGA 信號變換頻繁, 造成整個EP2C35 所有的D觸發器停止翻轉. 經過多次驗證, 只要輸入 ...…

查看全部問答∨

請問:Error[e16]: Segment CSTACK (size: 0x50 align: 0x1) is too long for segment de

Error[e16]: Segment CSTACK (size: 0x50 align: 0x1) is too long for segment definition. At least 0x4 more bytes needed. The pro××em occurred while processing the segment placement command "-Z(DATA)CSTACK+_STACK_SIZE#", wher ...…

查看全部問答∨

ARM問題

我用ADS1.2編譯生成兩個目標文件(init.o 和main.o),仿真沒問題,但是我燒了幾次復位沒有反應(S3C2410開發板)。請高人請點:兩個目標文件(init.o和main.o)怎么燒寫。備注一下,我燒寫用K9S1208()函數。…

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

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 裕民县| 石楼县| 敦化市| 盐边县| 兴文县| 盐山县| 应城市| 洛阳市| 巢湖市| 商洛市| 建水县| 江安县| 黄龙县| 栾川县| 高唐县| 扶绥县| 临沧市| 乐亭县| 大连市| 黄山市| 高唐县| 建瓯市| 许昌市| 临颍县| 漯河市| 安溪县| 霍邱县| 河津市| 霍州市| 鸡泽县| 时尚| 石林| 华池县| 曲水县| 南澳县| 罗山县| 东乌珠穆沁旗| 寻乌县| 长乐市| 盖州市| 新巴尔虎右旗|