国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 5688|回復: 3
打印 上一主題 下一主題

TMS320F280X SPI SPIA使用入門與總結

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2009-9-1 08:55:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關鍵詞: spi , 入門
TMS320F280X+SPI+SPIA使用入門與總結.pdf (135.49 KB) TMS320F280X SPI SPIA使用入門與總結
Netjob @ 2009 831日晚

我使用過NXP ARM LPC2138SPI口,ATMEL AT91SAM7S256SPIMSP430F5438SPI口,
還有STM32 SPI模塊。都是用來讀 SPI FLASH 例如 AT45DB642D之類。

本以為對SPI已經入門了, 誰不知使用TMS320F280XSPI后,才知道自己其實還是一知半解。
TMS320F280X SPI 真是好好給我上了一課!

不久前有款 OLED 真彩色液晶。使用的是SSD1351控制器,SPI接口。 想測試一下它的速度。就把它接到我的
TMS320F280XDSP 開發板上。之前使用DSPIO模擬,運行程序后OLED的效果不錯的。
本想這次使用SPI應該沒事吧『雖然I/O模擬也是使用這個SPI的引進』?

新建立一個工程 MYOLED, 拷貝一些TMS320F28X相關的頭文件,C文件。把工程的設置好后,編譯OK!
加上定時器中斷用來點亮一個LED,把I/O模擬的工程相關文件的兩個子函數改為SPI方式的。
在編譯。文件太大非得使用FLASH下載仿真

發現程序不能運行! 沒辦法改回RAM仿真,把很多函數注釋掉。僅僅留下測試OLED的程序。
SSD1351的測試程序,向它寫某命令碼,可以改變GPIO1/GPIO2引腳的電平。
其實移植就是僅僅這兩個SPI底層函數:
void Write_Data(unsigned char Data)
void Write_Command(unsigned char Data)

測試好幾次都沒反應,  因此 就有下面的入門與詳解了。

使用的是SPIA模塊,如果SPIB沒有什么特別(功能設置與SPIA差不多的話)也是沒什么問題的。
但是我之前使用SPIB測試過,發覺SPIB還是與SPIA有區別的。這點我也很不解~。
按道理應該不會這樣。但事實卻是如此.


TMS320F280XSPI 支持1-16位的數據類型。
而且 只有MSB先發送,不像ARM7/STM32等可以設MSBLSB先發送。
TMS320F280XSPI有回環模式, 可以用于測試,自發自收。
TMS320F280XSPITX FIFORX FIFO. 及其中斷字節設置。

看來沒什么特別? 是吧~?  先別小看啊~,就是搞不定它呢!


首先是要回環模式,這樣就是一個自發自收,方便測試。

其實現在看來,我曾經范了幾點毛病。

1.
使用8位模式,但SPIA總線,發送接收等寄存器都是16位模式。

2.
數據的位數設置不對

3.
時鐘極性與時鐘相位。

4.
使用了 TX FIFORX FIFO.
其實不用使用FIFO比較好。為什么?下面會講。

5.
沒有完全理解SPIA的發送與接收是【同時】進行的概念,這點實在很慚愧!

6.
發送是MSB對齊先發送,接收是LSB對齊接收,發送與接收是【同時】進行的!

沙發
 樓主| 發表于 2009-9-1 08:55:47 | 只看該作者
SSD1351的設置,是:
時鐘 空閑保持高電平。第二個時鐘邊沿數據采樣捕獲,第一時鐘邊沿鎖存

SCLK的空閑無效狀態是高電平 (其實也可以是低電平,但相位就要改改了,變為第二個時鐘邊沿鎖存,,第一時鐘邊沿數據采樣捕獲)
數據的MSB 先發送。

好了,看看我是如何范這些毛病的,
void Write_Data(unsigned char Data)
void Write_Command(unsigned char Data)

看出參數都是8位的數據,比如要發送Data=0x55;那么傳輸到DSP 的SPI寄存器里這就出問題了!
是吧? 因為是MSB先發送,這樣0x55到了16位的SPI寄存器例如SpiaRegs.SPITXBUF或

SpiaRegs.SPIDAT 就變為0x0055了,由于SPIA 設置位8位模式,而且是MSB 先發送。
那么就是只發送 0x0055的 00(高8位)了,低8位55就沒有發送了。

因此 發送前要做如下變換:

Uint16 tmp;

tmp=Data;


tmp<<=8;


。。。。


SpiaRegs.SPIDAT =tmp



       而接收時無需移位,SpiaRegs.SPIDAT、SpiaRegs.SPIRXBUF中低8位就是發送的tmp
      

SPIA的數據寬度設為8位。

SpiaRegs.SPICCR.bit.SPICHAR=7;
       這個其實很簡單,看看手冊就知道了,不過我在網上看的HOTPOWER有關C54X的SPI設置。
       就把SpiaRegs.SPICCR.bit.SPICHAR=8;來設8位的,這點我認為是不對了,雖然我不了解C54的SPI設置。
       但估計也與C28X是一樣的吧?哈哈!看來HOTPOWER也會范這樣的低級毛病?不會吧?
      
時鐘極性與時鐘相位,其實我的OLED要求的是      
【時鐘 空閑保持高電平。第二個時鐘邊沿數據采樣捕獲,第一時鐘邊沿鎖存,SCLK的空閑無效狀態是高電平】     
這個我想當然的搞錯了:

SpiaRegs.SPICCR.bit.CLKPOLARITY=1; // 空閑時是高電平 這是對的


SpiaRegs.SPICTL.bit.CLK_PHASE=1;//
這個是錯的!**



后來我認真看看了TI C28X SPI的數據手冊,這個大家一定要好好看看啊!




   
這個圖就是數據在時鐘下跳沿改變、鎖存,在時鐘上升沿被捕獲采樣。

如果不明白可以看看我的《精解 SPI 的
CPHA 時鐘相位 與CPLK 時鐘極性》
正確如下:

SpiaRegs.SPICCR.bit.CLKPOLARITY=1; // 空閑時是高電平 這是對的


SpiaRegs.SPICTL.bit.CLK_PHASE=0;//


SPIA的發送與接收是【同時】進行的概念
SPIA數據發送移位寄存器SpiaRegs.SPIDAT 是先發送MSB位,也就是BIT15位移位出SIMO,
同時從SOMI采樣一位數據到LSB 也就是BIT0。如此類推
BIT14移位到BIT15,然后發送到SIMO
BIT0移位到BIT1,然后從SOMI移入一位數據到BIT0……..

這個過程發送到SIMO和接收SOMI是同時進行的。
因此發生到底完成沒有,可以查看接收到完整的8位數據沒有。不過數據線怎樣,只要有MSB移除SIMO就有數據從SOMI移入BIT0,哪怕全是0或全是1.

都有點不同的是,C28X SPI手冊上說當數據接收完畢的SpiaRegs.SPIDAT,就好把SpiaRegs.SPIDAT的數據
輸入到SpiaRegs.RXBUF的RX FIFO中,并置位SpiaRegs.SPISTS.bit.INT_FLAG.
這點,我認為TI的數據手冊在忽悠我們。 真實情況是非的要關閉FIFO增強才會出現這個情況。
就是SpiaRegs.SPIFFTX.bit.SPIFFENA=0;
這樣我們要查詢到的數據發送完畢沒有,只有等到SpiaRegs.SPISTS.bit.INT_FLAG[local]1[/local]置位就可以了。

哎,有點晚了,明天還要上班啦~,大家請原諒在下了,

其實有決心寫這個全是因為當時出了問題比較著急,但在網上GOOGLE卻沒有什么收獲!真讓人氣憤!
全大陸這么多大學的YY,GG ,不是很會出啥書啥書的嗎?汗!
      真是希望大家從這文中有點收獲~,不要再被C28X的SPI折騰和TI文檔的折騰了~!哈哈。
希望TI別見怪啦~!
板凳
發表于 2009-9-1 09:43:08 | 只看該作者
頂一下
地板
發表于 2009-9-1 09:45:12 | 只看該作者
本帖最后由 machunshui 于 2009-9-1 09:46 編輯

“5.
沒有完全理解SPIA的發送與接收是【同時】進行的概念,這點實在很慚愧!”

Netjob這點沒理解,說不過去,這可是SPI最基本的概念
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级片免费在线观看视频| 日本特级黄色| 色综合图| 亚洲国产精品网站久久| 亚洲综合国产精品| 亚洲国产成人在线| 欧美成人免费网在线观看| 欧美久久综合性欧美| 一级毛片一| 日韩精品特黄毛片免费看| 三级网址在线播放| 亚洲美女精品视频| 人与禽一级一级毛片| 欧美激情综合亚洲一二区| 亚洲免费片| 亚洲精品国产福利| 午夜在线| 日产免费线路一二区| 三级天堂| 欧美成人国产| 日韩欧美偷拍| 亚洲激情视频在线观看| 亚洲综合激情另类图片专区| 日韩经典在线观看| 青青草综合网| 亚洲精品www| 日本成人免费在线| 日韩欧美在线第一页| 亚洲第一综合色| 青青视频网| 亚洲ab| 青青久久久国产线免观| 亚洲经典千人经典日产| 亚洲美女在线视频| 亚洲精品福利你懂| 亚洲图片小说综合| 人人乳乳香蕉大免费| 亚洲综合在线观看视频| 日本人的一区二区三区四区| 天堂网国产| 亚洲国产精品久久综合|