《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 同步隊(duì)列串行接口QSPI的研究與應(yīng)用
同步隊(duì)列串行接口QSPI的研究與應(yīng)用
摘要: MCU同外部設(shè)備的數(shù)據(jù)傳輸有兩種方式,一種是并行數(shù)據(jù)傳輸方式,另一種是串行數(shù)據(jù)傳輸方式。串行數(shù)據(jù)傳輸方式信號(hào)線少,協(xié)議簡(jiǎn)單,在長(zhǎng)距離、低速率的傳輸中得到廣泛應(yīng)用,常用的有SPI、I2C、UART等串行數(shù)據(jù)傳輸協(xié)議。
關(guān)鍵詞: 接口IC 串行接口 QSPI MCU
Abstract:
Key words :

MCU" target="_blank">MCU同外部設(shè)備的數(shù)據(jù)傳輸有兩種方式,一種是并行數(shù)據(jù)傳輸方式,另一種是串行數(shù)據(jù)傳輸方式。串行數(shù)據(jù)傳輸方式信號(hào)線少,協(xié)議簡(jiǎn)單,在長(zhǎng)距離、低速率的傳輸中得到廣泛應(yīng)用,常用的有SPI、I2C、UART等串行數(shù)據(jù)傳輸協(xié)議。其中,SPI協(xié)議為Motorola公司推出的同步串行外圍接口協(xié)議,Motorola公司的低端MCU上基本都集成了SPI模塊。在SPI協(xié)議的基礎(chǔ)上,Motorola公司對(duì)其功能進(jìn)行了增強(qiáng),增加了隊(duì)列傳輸機(jī)制,推出了隊(duì)列串行外圍接口協(xié)議(即QSPI協(xié)議)。使用該接口,用戶可以一次性傳輸包含多達(dá)16個(gè)8位或16位數(shù)據(jù)的傳輸隊(duì)列。一旦傳輸啟動(dòng),直到傳輸結(jié)束都無(wú)需CPU干預(yù),極大地提高了傳輸效率。該協(xié)議在隨后推出的ColdFire系列MCU中得到廣泛應(yīng)用。

  1   QSPI模塊的結(jié)構(gòu)如圖1所示。與SPI相比,QSPI結(jié)構(gòu)最大的特點(diǎn)是以80字節(jié)的RAM取代了SPI的發(fā)送和接收數(shù)據(jù)寄存器。80字節(jié)的RAM分成3部分:16字的發(fā)送RAM,16字的接收RAM和16字節(jié)的命令RAM。這3部分形成了具有16個(gè)QSPI傳輸控制組的傳輸隊(duì)列,每個(gè)QSPI傳輸控制組由1個(gè)命令RAM、1個(gè)發(fā)送RAM和1個(gè)接收RAM組成。每個(gè)QSPI傳輸?shù)臄?shù)據(jù)長(zhǎng)度、片選等信息可由該QSPI傳輸控制組的命令RAM單獨(dú)決定。

 

  由于SPl只有1個(gè)8位的發(fā)送數(shù)據(jù)寄存器,所以CPU每次最多只能準(zhǔn)備一個(gè)字節(jié)的待發(fā)送數(shù)據(jù)。而QSPI擁有具有16個(gè)QSPI傳輸控制組的傳輸隊(duì)列,所以CPU每次最多可以準(zhǔn)備16個(gè)待傳輸?shù)臄?shù)據(jù),并且可以通過(guò)命令RAM設(shè)置每個(gè)待傳輸數(shù)據(jù)的長(zhǎng)度。

  在QSPI模塊的QWR寄存器中,NEWQP和ENDQP域分別決定了傳輸隊(duì)列的起始點(diǎn)和結(jié)束點(diǎn)。起始點(diǎn)和結(jié)束點(diǎn)可以是16個(gè)QSPI 傳輸控制組的任意一個(gè)。當(dāng)QSPI傳輸啟動(dòng)時(shí),QSPI模塊將從起始點(diǎn)開始依次發(fā)送準(zhǔn)備好的數(shù)據(jù)直到結(jié)束點(diǎn),整個(gè)過(guò)程無(wú)需CPU干預(yù)。典型的QSPI傳輸流程如圖2所示,其中QP為傳輸隊(duì)列指針,指向即將傳輸?shù)臄?shù)據(jù)。
 

  QSPI模塊具有7個(gè)引腳:QSPI_DIN為串行數(shù)據(jù)輸入引腳;QSPI_DOUT為串行數(shù)據(jù)輸出引腳;QSPI_CLK為串行時(shí)鐘輸出;QSPI_CS[3:0]為片選信號(hào),通過(guò)外接譯碼器可以選擇多達(dá)16個(gè)設(shè)備。一次典型的16位QSPI傳輸時(shí)序如圖3所示。該時(shí)序假設(shè)片選信號(hào)低電平有效,時(shí)鐘空閑時(shí)為低電平,在時(shí)鐘的下降沿采樣串行數(shù)據(jù)。其中,時(shí)鐘空閑電平和采樣時(shí)鐘沿由QMR寄存器的CPOL和CPHA域決定。
 

  2  4線電阻式觸摸屏芯片ADS7843簡(jiǎn)介

  ADS7843是一款具有同步串行接口的4線電阻式觸摸屏控制芯片,具有12位模/數(shù)轉(zhuǎn)換精度。ADS7843的4個(gè)模擬電壓輸入引腳X+、X-、Y+、Y-連接觸摸屏的4個(gè)電極,觸摸屏通過(guò)這4個(gè)引腳將觸點(diǎn)電壓送到ADS7843進(jìn)行量化。具體來(lái)說(shuō),如果要獲取觸點(diǎn)Y坐標(biāo),ADS7843會(huì)在Y十和Y-之間施加一個(gè)電壓,觸點(diǎn)將X+與Y+和Y-間電阻網(wǎng)絡(luò)的一點(diǎn)導(dǎo)通,與觸點(diǎn)位置相關(guān)的分壓值就會(huì)通過(guò)X+送入ADS7843,通過(guò)量化這個(gè)分壓值就可以獲取觸點(diǎn)的Y坐標(biāo)。X坐標(biāo)的獲取也是相同的道理。量化臺(tái)階由基準(zhǔn)電壓和每個(gè)樣點(diǎn)量化后的位數(shù)n決定,為基準(zhǔn)電壓的1/2”。

  2.1 ADS7843工作模式

  ADS7843具有兩種工作模式:?jiǎn)味四J胶筒罘帜J?。兩種模式的區(qū)別在于基準(zhǔn)電壓采用了不同的構(gòu)成方式。基準(zhǔn)電壓是ADS7843內(nèi)部模/數(shù)轉(zhuǎn)換模塊的正負(fù)參考電壓+REF和-REF之差。當(dāng)處于單端模式時(shí),+REF來(lái)自外部參考電壓輸入,一般選取ADS7843的供電電壓+ Vcc,-REF接地,所以基準(zhǔn)電壓為+Vcc。假設(shè)在該模式下獲取觸點(diǎn)Y坐標(biāo),由于+Vcc是通過(guò)三極管施加在Y+和Y一之間,所以三極管的導(dǎo)通電阻始終會(huì)分去一部分電壓。這樣無(wú)論觸點(diǎn)在哪里,都不可能獲得滿量程。這個(gè)問題可以通過(guò)工作在差分模式解決。在該模式下,當(dāng)要獲取觸點(diǎn)Y坐標(biāo)時(shí),芯片內(nèi)部自動(dòng)將Y+與+REF相連,Y-與-REF相連,這樣Y+與Y-之間的電壓始終為基準(zhǔn)電壓,消除了三級(jí)管導(dǎo)通電阻的影響。

  2.2 ADS7843的數(shù)字接口

  ADS7843的數(shù)字接口包括片選CS、串行數(shù)據(jù)輸入DIN、串行數(shù)據(jù)輸出DOUT、時(shí)鐘輸入DCLK、中斷信號(hào)PENIRQ五個(gè)引腳,能與具有串行接口的微控制器或數(shù)字信號(hào)處理器進(jìn)行數(shù)據(jù)交換。處理器與ADS7843之間需要24個(gè)串行時(shí)鐘周期才能完成一次完整的轉(zhuǎn)換。前8個(gè)時(shí)鐘周期用于向ADS7843提供一個(gè)控制字節(jié),該控制字節(jié)組成如下:
 

  S位為“1”時(shí)表明控制字節(jié)的開始;A[2:0]用于選擇量化通道,“001”選擇X通道,“101”選擇Y通道;MODE位為“1”時(shí)選擇8位量化精度,為“0”時(shí)選擇12位量化精度;SER/DFR位為“1”時(shí)選擇單端模式,為“0”時(shí)選擇差分模式;PD[1:0]用于選擇一種省電模式。控制字傳輸完后,接下來(lái)的16個(gè)時(shí)鐘周期用于傳輸量化后的坐標(biāo)數(shù)據(jù)。

  ADS7843數(shù)字接口還有以下特點(diǎn):片選低電平有效,時(shí)鐘空閑時(shí)為低電平,時(shí)鐘的上升沿采樣串行數(shù)據(jù)。

  3 基于ColdFire處理器QSPI接口的觸摸屏驅(qū)動(dòng)設(shè)計(jì)

  3.1 硬件電路

  觸摸屏控制芯片ADS7843與ColdFire系列處理器的硬件連接圖如圖4所示。
 

  ADS7843數(shù)字接口的4個(gè)引腳與COLDFire處理器QS-PI模塊對(duì)應(yīng)引腳相連,中斷信號(hào)引腳PENIRQ與處理器外部中斷引腳IRQ4相連。注意,需要10kΩ上拉電阻。

  3.2 軟件設(shè)計(jì)

  從觸摸發(fā)生到獲取觸摸點(diǎn)坐標(biāo)的過(guò)程如下:觸摸發(fā)生時(shí),ADS7843會(huì)通過(guò)PENIRQ引腳觸發(fā)一個(gè)中斷,在中斷子程序中首先應(yīng)延遲10~20 ms以去除抖動(dòng)帶來(lái)的影響,然后向ADS7843發(fā)送控制字獲取X、Y坐標(biāo)。
獲取一個(gè)坐標(biāo)的值需要向ADS7843輸入24個(gè)時(shí)鐘周期。對(duì)QSPI模塊來(lái)說(shuō),可以把這24個(gè)周期作為3次8位的傳輸隊(duì)列,或1次8位、1次16位的傳輸隊(duì)列。這里選擇3次8位傳輸隊(duì)列的方式。QSPI初始化代碼如下:
 

  其中,QSPI_QMR和QSPI_QWR為QSPI寄存器QMR和QWR的地址。獲勝X坐標(biāo)函數(shù)代碼如下:
 

  獲取Y坐標(biāo)函數(shù)代碼同獲取X坐標(biāo)函數(shù)代碼基本一致,只需要將發(fā)送給ADS7843的控制命令修改為0xD0,表示選擇Y通道,12位精度,差分模式。

  為觀察QSPI模塊與ADS7843是否能正確地進(jìn)行通信,使用Agilent1673G邏輯分析儀對(duì)4個(gè)引腳的時(shí)序進(jìn)行了捕捉。圖5顯示了讀取X坐標(biāo)時(shí)的時(shí)序圖,4個(gè)引腳從上到下依次是片選CS、串行時(shí)鐘DCLK、串行數(shù)據(jù)輸入DIN、串行數(shù)據(jù)輸出DOUT。從圖中可以清楚地看到,在前8個(gè)時(shí)鐘周期,處理器向ADS7843輸入了控制字;在第10個(gè)時(shí)鐘處,ADS7843開始輸出12位的量化數(shù)據(jù);最后3個(gè)時(shí)鐘,ADS7843將輸出線拉低。
 

  結(jié) 語(yǔ)

  本文分析了一種改進(jìn)的SPI傳輸接口QSPI的工作機(jī)制,并通過(guò)QSPI模塊與觸摸屏控制芯片ADS7843通信的實(shí)例闡述了該模塊的典型應(yīng)用。QSPI模塊的隊(duì)列機(jī)制加快了數(shù)據(jù)傳輸速度,減少了CPU的干預(yù)。除此之外,該模塊提供了對(duì)時(shí)鐘有效電平、采樣沿、片選電平、傳輸數(shù)據(jù)位數(shù)等的自由配置,使其能靈活地與各種具有串行接口的設(shè)備進(jìn)行通信。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。