一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用單片機的I/O口通過軟件模擬SPI總線的實現(xiàn)方法

GReq_mcu168 ? 來源:玩轉(zhuǎn)單片機 ? 2020-09-02 11:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

SPI(Serial Peripheral Interfacer 串行外設(shè)接口)是摩托羅拉公司推出的一種同步串行通訊接口,用于微處理器控制器和外圍擴展芯片之間的串行連接,現(xiàn)已發(fā)展成為一種工業(yè)標準,目前,各半導體公司推出了大量的帶有SPI接口的具有各種各樣功能的芯片,如RAM,EEPROM,F(xiàn)lashROM,A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器、LED/LED顯示驅(qū)動器、I/O接口芯片、實時時鐘、UART收發(fā)器等等,為用戶的外圍擴展提供了極其靈活而價廉的選擇。由于SPI總線接口只占用微處理器四個I/O口線,采用SPI總線接口可以簡化電路沒計,節(jié)省很多常規(guī)電路中的接口器件和I/O口線,提高設(shè)計的可靠性。

現(xiàn)以 AT89C205l單片機模擬SPI總線操作串行EEPROM 93CA6為例,如圖1所示,介紹利用單片機的I/O口通過軟件模擬SPI總線的實現(xiàn)方法。在這里,僅介紹讀命令的時序和應(yīng)用子程序。

93C46存儲器SPI總線的工作原理

93CA6作為從設(shè)備,其SPI接口使用4條I/O口線:串行時鐘線(SK)、輸出數(shù)據(jù)線DO、輸入數(shù)據(jù)線DI和高電平有效的從機選擇線CS。其數(shù)據(jù)的傳輸格式是高位(MSB)在前,低位(LsB)在后。93C46的SPI總線接口讀命令時序如圖2所示。

軟件模擬SPI接口的實現(xiàn)方法

對于不帶SPI串行總線接口的AT89C2051單片 機來說,可以使用軟件來模擬SPI的操作,圖1所示 為AT89C2051單片機與串行EEPROM 93C46的硬件 連接圖,其中,P1.0模擬SPI主設(shè)備的數(shù)據(jù)輸出端 SDO,P1.2模擬SPI的時鐘輸出端SCK,P1.3模擬 SPI的從機選擇端SCS,P1.1模擬SPI的數(shù)據(jù)輸入 SDI
上電復(fù)位后首先先將P1.2(SCK)的初始狀態(tài)設(shè)置為0(空閑狀態(tài))。
讀操作:AT89C2051首先通過P1.0口發(fā)送1位起始位(1),2位操作碼(10),6位被讀的數(shù)據(jù)地址(A5A4A3A2A1A0),然后通過P1.1口讀1位空位(0),之后再讀l6位數(shù)據(jù)(高位在前)。
寫操作:AT89C2051首先通過P1.0口發(fā)送1位起始位(1),2位操作碼(01),6位被寫的數(shù)據(jù)地址(A5A4A3A2A1A0),之后通過P1.0口發(fā)送被寫的l6位數(shù)據(jù)(高位在前),寫操作之前要發(fā)送寫允許命令,寫之后要發(fā)送寫禁止命令。
寫允許操作(WEN)):寫操作首先發(fā)送1位起始位(1),2位操作碼(00),6位數(shù)據(jù)(11XXXX)。 寫禁止操作(WDS)):寫操作首先發(fā)送1位起始位(1),2位操作碼(00),6位數(shù)據(jù)(00XXXX)。

下面介紹用C51模擬SPI的子程序。

1. //首先定義好I/O口 2. sbit SDO=P1^0;3. sbit SDI=P1^1;4. sbit SCK=P1^ 2;5. sbit SCS=P1^3;6. sbit ACC_7= ACC^7;7. unsigned int SpiRead(unsigned char add) 8. { 9. unsigned char i;10. unsigned int datal6;11. add&=0x3f;/*6位地址*/ 12. add |=0x80;/*讀操作碼l0*/ 13. SDO=1;/*發(fā)送1為起始位*/ 14. SCK=0;15. SCK=1;16. for(i=0;<8;i++)/*發(fā)送操作碼和地址*/ 17. { 18. if(add&0x80==1) 19. SDO=1;20. else 21. SDO=0;22. SCK=0;/*從設(shè)備上升沿接收數(shù)據(jù)*/ 23. SCK=1;24. add<<= 1;25. } 26. SCK=1;/*從設(shè)備時鐘線下降沿后發(fā)送數(shù)據(jù),空讀1位數(shù)據(jù)*/ 27. SCK=0;28. datal6<<= 1;/*讀16位數(shù)據(jù)*/ 29. for(i=0;<16;i++) 30. { 31. SCK= 1;32. _nop_();33. if(SDI==1) 34. datal6|=0x01;35. SCK =0;36. datal6< < =1;37. } 38. return datal6;39. }? 對于不同的串行接口外圍芯片,它們的時鐘時序是不同的。上述子程序是針對在SCK的上升沿輸入(接收)數(shù)據(jù)和在下降沿輸出(發(fā)送)數(shù)據(jù)的器件。這些子程序也適用于在串行時鐘)的上升沿輸入和下降沿輸出的其它各種串行外圍接口芯片,只要在程序中改變P1.2(SCK)的輸出電平順序進行相應(yīng)調(diào)整即可。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6067

    文章

    44989

    瀏覽量

    650357
  • 微處理器
    +關(guān)注

    關(guān)注

    11

    文章

    2383

    瀏覽量

    84166
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1804

    瀏覽量

    95922

原文標題:單片機軟件模擬SPI接口

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    ads7886的輸出接口 *CS SDO SCLK可以直接連接到單片機I/O上嗎?

    請問一下,ads7886的輸出接口 *CSSDOSCLK 可以直接連接到單片機I/O上,還是一定要上拉一個電阻然后在連接單片機I/
    發(fā)表于 02-08 07:08

    單片機I/O接口的傳輸方式

    單片機(Microcontroller Unit,MCU)作為嵌入式系統(tǒng)的核心部件,其輸入輸出(Input/Output,I/O)接口是實現(xiàn)與外部設(shè)備數(shù)據(jù)交換的關(guān)鍵。
    的頭像 發(fā)表于 02-02 15:56 ?1056次閱讀

    I2C總線單片機的連接

    在現(xiàn)代電子系統(tǒng)中,單片機(MCU)是核心控制單元,而I2C總線作為一種多主機、多從的串行通信協(xié)議,因其簡單、高效和節(jié)省引腳的特性而被廣泛應(yīng)用于各種電子設(shè)備中。
    的頭像 發(fā)表于 01-17 15:18 ?1171次閱讀

    單片機Debug與仿真區(qū)別

    是指在軟件或硬件開發(fā)過程中,通過特定的工具和技術(shù)來查找、診斷和修復(fù)錯誤的過程。在單片機開發(fā)中,Debug通常涉及到以下幾個方面: 硬件調(diào)試 :檢查單片機的硬件連接是否正確,包括電源、時
    的頭像 發(fā)表于 12-19 09:47 ?920次閱讀

    如何通過總線來初始化ADS1256的寄存器?

    我用STC89C52來驅(qū)動ADS1256時,發(fā)現(xiàn)需要用到SPI協(xié)議,單片機需要用IO模擬SPI總線
    發(fā)表于 12-16 06:47

    51單片機STC8H8K64U通過RA8889/RA8876如何控制彩屏 I2C源碼下載

    用51單片機STC8H8K64U驅(qū)動彩屏,控制器采用瑞佑RA8889. 使用軟件模擬I2C方式通信,驅(qū)動大屏顯示。
    的頭像 發(fā)表于 11-01 11:02 ?1241次閱讀
    51<b class='flag-5'>單片機</b>STC8H8K64U<b class='flag-5'>通過</b>RA8889/RA8876如何控制彩屏 <b class='flag-5'>I</b>2C源碼下載

    單片機io怎么配置成輸出口

    單片機IO配置成輸出口的過程通常涉及對單片機內(nèi)部寄存器的操作。不同型號的單片機在寄存器配置和編程方式上可能有所不同,但基本原理是相似的。以下是一個通用的步驟,用于將
    的頭像 發(fā)表于 09-14 14:33 ?1585次閱讀

    單片機io輸出電流多大

    單片機IO的輸出電流大小會受到多種因素的影響,包括單片機的型號、IO的配置模式以及外部電路的設(shè)計等。以下是對單片機IO
    的頭像 發(fā)表于 09-14 14:29 ?4278次閱讀

    單片機io的四種工作狀態(tài)

    )是單片機與外部世界進行數(shù)據(jù)交換的接口。每個I/O可以配置為輸入或輸出狀態(tài),或者同時具備這兩種功能。I/
    的頭像 發(fā)表于 09-14 14:24 ?3796次閱讀

    單片機的三種總線結(jié)構(gòu)

    單片機的三種總線結(jié)構(gòu)包括地址總線(Address Bus, AB)、數(shù)據(jù)總線(Data Bus, DB)和控制總線(Control Bus,
    的頭像 發(fā)表于 09-10 11:32 ?7160次閱讀

    單片機SPI通信實現(xiàn)

    在深入探討單片機(如基于STM32、AVR、PIC等)如何通過SPI(Serial Peripheral Interface)進行通信之前,我們先概述SPI通信的基本原理,隨后以STM
    的頭像 發(fā)表于 09-09 17:00 ?1643次閱讀

    單片機燒錄程序用什么軟件

    工作原理和接口方式的不同,可以分為以下幾類: 1.1 并行燒錄器:通過并行接口將程序數(shù)據(jù)傳輸給單片機,燒錄速度快,但需要占用較多的I/O端口。 1.2 串行燒錄器:
    的頭像 發(fā)表于 09-02 10:05 ?3428次閱讀

    單片機引腳懸空是什么電平

    單片機引腳懸空是指單片機I/O引腳在沒有連接任何外部電路的情況下,引腳的電平狀態(tài)。懸空引腳的電平狀態(tài)取決于單片機的內(nèi)部結(jié)構(gòu)和外部環(huán)境因素。
    的頭像 發(fā)表于 08-28 09:51 ?4836次閱讀

    51單片機燒錄軟件怎么用

    靠的來源下載燒錄軟件。 按照安裝向?qū)瓿?b class='flag-5'>軟件的安裝。 連接51單片機 將51單片機開發(fā)板通過燒錄器連接到計算機。 確保連接正確,沒有松動或接
    的頭像 發(fā)表于 08-22 09:26 ?2843次閱讀

    51單片機(STC8H8K64U/STC8051U34K64)_RA8889_HW_SPI4參考代碼(v1.3) 硬件SPI方式驅(qū)動大屏顯示

    文章導引: (1)51單片機(STC8051U34K64)_RA8889_SPI4參考代碼(v1.3) (2)51單片機STC8H8K64U通過RA8889/RA8876如何控制彩屏_
    發(fā)表于 07-17 11:15