• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      SPI和單片機(jī)技術(shù)在嵌入式系統(tǒng)擴(kuò)展中的應(yīng)用

      2016-03-22 05:36:36江漢大學(xué)文理學(xué)院信息技術(shù)學(xué)部鄧乃君
      電子世界 2016年2期
      關(guān)鍵詞:擴(kuò)展單片機(jī)技術(shù)嵌入式系統(tǒng)

      江漢大學(xué)文理學(xué)院信息技術(shù)學(xué)部 鄧乃君 吳 文

      ?

      SPI和單片機(jī)技術(shù)在嵌入式系統(tǒng)擴(kuò)展中的應(yīng)用

      江漢大學(xué)文理學(xué)院信息技術(shù)學(xué)部鄧乃君吳文

      【摘要】隨著計(jì)算機(jī)技術(shù)、電子技術(shù)的快速發(fā)展,芯片制造成本明顯降低,嵌入式系統(tǒng)在移動(dòng)設(shè)備、數(shù)碼產(chǎn)品等各個(gè)領(lǐng)域廣泛應(yīng)用。文中基于SPI接口集成外圍單片機(jī)的方法對(duì)嵌入式系統(tǒng)功能進(jìn)行擴(kuò)展,詳細(xì)闡述整個(gè)擴(kuò)展方案的結(jié)構(gòu)及工作原理,重點(diǎn)介紹Linux環(huán)境下外圍設(shè)備驅(qū)動(dòng)程序的運(yùn)行方法,以期為類似開(kāi)發(fā)程序提供重要參考。

      【關(guān)鍵詞】SPI;單片機(jī)技術(shù);嵌入式系統(tǒng);擴(kuò)展

      近些年,對(duì)各類嵌入式系統(tǒng)進(jìn)行設(shè)計(jì)中,對(duì)系統(tǒng)的存儲(chǔ)、通信需求提出更高的要求。嵌入式產(chǎn)品具有個(gè)性化、人性化的特征,從而受到更多商家和消費(fèi)者的歡迎,促使嵌入式設(shè)備的市場(chǎng)競(jìng)爭(zhēng)更加激烈。傳統(tǒng)的嵌入式系統(tǒng)外部接口比較滯后,導(dǎo)致嵌入式系統(tǒng)中擴(kuò)展外部設(shè)備有一定的困難。雖然芯片技術(shù)的發(fā)展提供具有強(qiáng)大功能的SOC層,其集成的功能、接口更加豐富,但其開(kāi)發(fā)費(fèi)用、生產(chǎn)成本極高,在市場(chǎng)競(jìng)爭(zhēng)中逐漸喪失價(jià)格優(yōu)勢(shì)。與片上系統(tǒng)比較,單片機(jī)的運(yùn)算能力不理想,但其價(jià)格低、開(kāi)發(fā)周期短,能夠基于用戶需求對(duì)其功能進(jìn)行靈活調(diào)整,單片機(jī)的優(yōu)勢(shì)更加明顯。文中根據(jù)SPI接口、外圍單片機(jī)提出嵌入式系統(tǒng)功能擴(kuò)展方法,通過(guò) SPI在主CPU外圍集成單片機(jī),借助單片機(jī)完成嵌入式系統(tǒng)的功能擴(kuò)展。

      1 嵌入式系統(tǒng)擴(kuò)展方案及工作原理

      嵌入式系統(tǒng)的擴(kuò)展方案的設(shè)備主要包括主CPU、單片機(jī)、外圍設(shè)備三個(gè)部分,主CPU借助SPI接口實(shí)現(xiàn)與單片機(jī)交互數(shù)據(jù),通過(guò)單片機(jī)已有的IO口、UART等接口擴(kuò)展一系列串口、紅外接口各項(xiàng)外圍設(shè)備。外圍數(shù)據(jù)經(jīng)單片機(jī)處理后借助SPI總線發(fā)送至主CPU。反之,主CPU想要訪問(wèn)外圍設(shè)備也要借助SPI總線發(fā)送給單片機(jī),通過(guò)單片機(jī)程序完成對(duì)外圍設(shè)備的訪問(wèn)操作。系統(tǒng)結(jié)構(gòu)如圖1所示。

      圖1 系統(tǒng)功能結(jié)構(gòu)簡(jiǎn)圖

      SPI接口也稱為外圍接口,數(shù)據(jù)傳遞速度相比I2C總線更快,能夠?qū)崿F(xiàn)主CPU與多個(gè)外圍器件傳輸數(shù)據(jù)信息的目的。SPI接口工作方式為主從模式,需要設(shè)計(jì)一個(gè)主機(jī)和一個(gè)多個(gè)從器件傳送數(shù)據(jù)。本次設(shè)計(jì)中,主CPU是以單主單從的模式與外圍單面機(jī)完成點(diǎn)對(duì)點(diǎn)通信。具體應(yīng)用過(guò)中,可以依據(jù)實(shí)際需求通過(guò)SPI總線在外圍集成相對(duì)應(yīng)的單片機(jī)控制單元,從而集成大量的外圍設(shè)備。因其實(shí)際應(yīng)用領(lǐng)域的差異,根據(jù)開(kāi)發(fā)的SPI協(xié)議與單片機(jī)固件程序合理調(diào)整外圍設(shè)備,在并未增加大量制造成本和開(kāi)發(fā)工作量的基礎(chǔ)上,完成對(duì)嵌入式系統(tǒng)功能的擴(kuò)展操作。同時(shí),外圍控制單片機(jī)能夠?qū)λ屑稍O(shè)備采集的信息進(jìn)行相應(yīng)的前置處理,能夠分擔(dān)主CPU運(yùn)算壓力,提升整個(gè)嵌入系統(tǒng)的響應(yīng)效率。

      2 外圍驅(qū)動(dòng)程序結(jié)構(gòu)及運(yùn)行機(jī)制

      本系統(tǒng)所用的設(shè)備驅(qū)動(dòng)程序基于Linux系統(tǒng)下進(jìn)行設(shè)計(jì),在Linux系統(tǒng)中,外部設(shè)備被抽象稱作文件,對(duì)文件開(kāi)展的各項(xiàng)操作也是對(duì)外部設(shè)備的操作,上述機(jī)制被稱作虛擬文件系統(tǒng)。設(shè)備驅(qū)動(dòng)程序是連接上層用戶程序與機(jī)器硬件的重要接口,能夠屏蔽硬件設(shè)備各項(xiàng)具體操作,把具體的硬件設(shè)備抽象為設(shè)備文件提供給用戶程序,促使應(yīng)用程序能夠像普通文件一樣對(duì)硬件設(shè)備實(shí)施讀寫(xiě)操作。設(shè)備驅(qū)動(dòng)程序主要任務(wù)在于對(duì)設(shè)備及資源進(jìn)行釋放,讀取并會(huì)送程序發(fā)出的信息,實(shí)現(xiàn)用戶空間、內(nèi)核空間與物理層之間的數(shù)據(jù)傳遞。Linux環(huán)境下LED驅(qū)動(dòng)程序代碼如下:

      #define DEVICE_NAME "leds" //加載模式后,執(zhí)行”cat /proc/devices”命令看到的設(shè)備名稱 //

      #define LED_MAJOR 231 /* 主設(shè)備號(hào) //

      應(yīng)用程序執(zhí)行ioctl(fd, cmd, arg)時(shí)的第2個(gè)參數(shù) */

      #define IOCTL_LED_OFF 1

      /* 用于指定LED所用的GPIO引腳 //

      static unsigned long led_table [] = {

      S3C2410_GPB5,

      S3C2410_GPB7,

      ······

      }。

      本次設(shè)計(jì)的擴(kuò)展方法,主CPU借助SPI接口與外圍單片機(jī)完成通信。對(duì)外圍設(shè)備驅(qū)動(dòng)程序進(jìn)行設(shè)計(jì)時(shí),設(shè)置SPI通信、單片機(jī)控制兩個(gè)細(xì)節(jié),把單片機(jī)所集成的外圍設(shè)備與主CPU集成本地設(shè)備中,便于用戶程序進(jìn)行讀寫(xiě)操作。2.1本地系統(tǒng)設(shè)備驅(qū)動(dòng)程序?qū)崿F(xiàn)過(guò)程

      主CPU能夠直接集成本地串口設(shè)備及外圍單片機(jī)擴(kuò)展的串口、IO設(shè)備等驅(qū)動(dòng)實(shí)現(xiàn)過(guò)程。從本地設(shè)備驅(qū)動(dòng)來(lái)說(shuō),驅(qū)動(dòng)程序?qū)τ布O(shè)備展開(kāi)的操作直接定義至接口函數(shù)內(nèi),如果用戶程序訪問(wèn)設(shè)備文件,接口函數(shù)執(zhí)行對(duì)硬件設(shè)備的讀寫(xiě)等操作。如果用戶程序借助串口驅(qū)動(dòng)定義的接口函數(shù)對(duì)本次串口文件展開(kāi)訪問(wèn)操作,驅(qū)動(dòng)核心會(huì)把用戶發(fā)出的請(qǐng)求傳遞至本地串口,通過(guò)該串口驅(qū)動(dòng)底層定義硬件函數(shù)把串口數(shù)據(jù)發(fā)送至硬件設(shè)備,達(dá)到最佳的通信目的。

      2.2SPI協(xié)議及外圍擴(kuò)展設(shè)備實(shí)現(xiàn)過(guò)程

      SPI協(xié)議就是串行外圍設(shè)備結(jié)構(gòu),主要應(yīng)用在AD轉(zhuǎn)換器、數(shù)字信號(hào)處理器、解碼器、實(shí)時(shí)時(shí)鐘之間,是需在芯片關(guān)節(jié)占用四根線,是一種高速的,全雙工的通信總線。SPI通信原理比較簡(jiǎn)單,主要包括ss(cs)、sck、sdi、sdo構(gòu)成,基于SCK控制下,兩個(gè)雙向移位寄存器展開(kāi)數(shù)據(jù)交換操作。因SPI總線接口主要占用微處理器4個(gè)I/O口線,使用SPI總線接口能有限監(jiān)護(hù)電力設(shè)計(jì),節(jié)省大量常規(guī)電路接口器件及I/O口線,提升整個(gè)設(shè)計(jì)的可靠性。下文介紹SPI子程序設(shè)計(jì)代碼:

      //首先定義好I/O口

      sbit SDO=P1^0;

      sbit SDI=P1^1;

      ······

      sbit ACC_7= ACC^7;

      unsigned int SpiRead(unsigned char add)

      {

      unsigned int datal6;

      add&=0x3f;/*6位地址*/

      add |=0x80;/*讀取操作碼l0*/

      SDO=1;/*發(fā)送1為起始位*/

      SCK=0;

      for(i=0;<8;i++)/*發(fā)送操作碼和地址*/

      {

      if(add&0x80==1)

      SDO=1;

      SCK=0;/*從設(shè)備上升沿接收數(shù)據(jù)*/

      add<<= 1;

      }

      SCK=1;/*從設(shè)備時(shí)鐘線下降沿后發(fā)送數(shù)據(jù),空讀1位數(shù)據(jù)*/

      datal6<<= 1;/*讀16位數(shù)據(jù)*/

      {

      SCK= 1;

      datal6|=0x01;

      SCK =0;

      datal6< < =1;

      return datal6;

      }

      在單片機(jī)內(nèi)集成的外圍設(shè)備,因主CPU無(wú)法對(duì)其展開(kāi)直接的硬件操作,其訪問(wèn)過(guò)程比較復(fù)雜。SPI通信協(xié)議棧主要包括SPI基本驅(qū)動(dòng)和虛通道協(xié)議棧兩部分,SPI基本驅(qū)動(dòng)協(xié)議中設(shè)定SPI數(shù)據(jù)包純屬速度、糾錯(cuò)方法等協(xié)議,確保SPI數(shù)據(jù)包能夠在主CPU與單片機(jī)進(jìn)行順利傳輸。SPI虛通道協(xié)議棧設(shè)定每一個(gè)外擴(kuò)展設(shè)備的數(shù)據(jù)格式、功能碼等協(xié)議,便于對(duì)SPI數(shù)據(jù)包展開(kāi)解析、封裝操作.

      驅(qū)動(dòng)程序虛通道協(xié)議棧作為外圍設(shè)備的硬件驅(qū)動(dòng)在,主要由外擴(kuò)展設(shè)備數(shù)據(jù)處理、重點(diǎn)響應(yīng)等內(nèi)容。上述虛擬硬件驅(qū)動(dòng)通過(guò)調(diào)用協(xié)議棧虛擬的通道實(shí)現(xiàn)在用戶與SPI硬件接口對(duì)數(shù)據(jù)進(jìn)行傳遞。從單片機(jī)集成的外圍串口來(lái)說(shuō),這種外圍串口能與本地串口使用同一個(gè)串口驅(qū)動(dòng)核心實(shí)施封裝,虛擬成為與本次串口相同的串口設(shè)備為用戶程序提供服務(wù)。本地串口驅(qū)動(dòng)層能直接執(zhí)行串口硬件范圍操作,該虛擬硬件驅(qū)動(dòng)并不執(zhí)行各項(xiàng)硬件操作,僅調(diào)用協(xié)議棧虛擬的數(shù)據(jù)通道向SPI硬件傳遞數(shù)據(jù),通過(guò)外圍單片機(jī)完成接收或發(fā)送串口數(shù)據(jù)的目的。

      3 結(jié)束語(yǔ)

      總之,對(duì)嵌入式系統(tǒng)功能進(jìn)行擴(kuò)展設(shè)計(jì)中,本次設(shè)計(jì)通過(guò)SPI接口集成外圍單片機(jī)的方法設(shè)計(jì)嵌入式系統(tǒng)擴(kuò)展方案,詳細(xì)介紹整個(gè)擴(kuò)展方案的工作原理,重點(diǎn)闡述在Linux環(huán)境下外圍驅(qū)動(dòng)體系的接口及實(shí)現(xiàn)過(guò)程,這種擴(kuò)展方案成為實(shí)現(xiàn)串口、通信接口等擴(kuò)展功能,對(duì)改善外圍接口資源不足的問(wèn)題做出重要貢獻(xiàn)。

      參考文獻(xiàn)

      [1]米書(shū)田,王濤,張然等.基于單片機(jī)及嵌入式系統(tǒng)管理煤炭存儲(chǔ)的探究[J].煤炭技術(shù),2013,32(2):240-242.

      [2]秦磊,孫曼,王小亮等.CH395與 SPI 接口的以太網(wǎng)模塊設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2015,15(7): 61-64.

      [3]陳宇珂,鄭理華,張興安,等.ATMEL AVR單片機(jī)SPI大容量Flash Rom擴(kuò)展的實(shí)現(xiàn)[J].醫(yī)療衛(wèi)生裝備,2015,36(4):19-21,68.

      [4]朱德良,吳國(guó)強(qiáng),陳新春等.一種單片機(jī)多任務(wù)操作系統(tǒng)的設(shè)計(jì)與應(yīng)用[J].自動(dòng)化與儀表,2014,29(1):50-52.

      [5]湯沁,徐學(xué)軍,彭地卓等.基于Linux嵌入式系統(tǒng)的S3C6410和ADS1298R的SPI接口驅(qū)動(dòng)的實(shí)現(xiàn)[J].中國(guó)新通信,2014,9(1):79-80,81.

      [6]蔡紅專,劉強(qiáng),陳琎等.嵌入式系統(tǒng)中基于SPI協(xié)議的SD卡擴(kuò)展實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2014,33(19):23-26.

      鄧乃君(1993—),男,湖北武漢人,現(xiàn)就讀江漢大學(xué)文理學(xué)院信息技術(shù)學(xué)部,從事嵌入式系統(tǒng)的開(kāi)發(fā)與研究。

      作者簡(jiǎn)介:

      猜你喜歡
      擴(kuò)展單片機(jī)技術(shù)嵌入式系統(tǒng)
      淺談數(shù)據(jù)挖掘和自適應(yīng)算法的應(yīng)用
      多維傳播語(yǔ)境下的播音主持功能與拓展研究
      基于物聯(lián)網(wǎng)項(xiàng)目驅(qū)動(dòng)的嵌入式系統(tǒng)教學(xué)改革的研究與實(shí)踐
      嵌入式系統(tǒng)課程“中斷、異常與事件”教學(xué)實(shí)踐及啟示
      面向?qū)嵺`創(chuàng)新人才培養(yǎng)的嵌入式系統(tǒng)教學(xué)研究
      單片機(jī)技術(shù)在多機(jī)通信系統(tǒng)設(shè)計(jì)中的應(yīng)用
      試論單片機(jī)技術(shù)在電氣傳動(dòng)系統(tǒng)的應(yīng)用
      恒溫晶體振蕩器調(diào)頻范圍擴(kuò)展思考
      單片機(jī)課堂教學(xué)探究
      在DiskOnChip上構(gòu)建VxWorks系統(tǒng)開(kāi)發(fā)環(huán)境
      新丰县| 盐亭县| 将乐县| 资讯 | 安化县| 南充市| 察雅县| 昭苏县| 泽库县| 德阳市| 固阳县| 河东区| 周至县| 监利县| 东莞市| 太原市| 中西区| 莱芜市| 崇仁县| 宽城| 革吉县| 临海市| 宁阳县| 达尔| 秦皇岛市| 崇州市| 赤水市| 巴彦县| 门头沟区| 定兴县| 泰宁县| 漳州市| 津市市| 玉门市| 巴林左旗| 庆安县| 正阳县| 拜城县| 靖州| 枣阳市| 全南县|