<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > TI系列DSP的I2C模塊配置與應用

TI系列DSP的I2C模塊配置與應用

——
作者:北京航空航天大學(xué) 趙世峰 張海 范耀祖 中國航天時(shí)代電子公司 吳海濤 時(shí)間:2007-01-26 來(lái)源:《單片機與嵌入式系統應用》 收藏

i2c總線(xiàn)最早是由philips公司提出的串行通信接口規范,標準i2c總線(xiàn)只使用兩條線(xiàn)通信,能將多個(gè)具有i2c接口的設備連接,進(jìn)行可靠的通信,連接到同一總線(xiàn)的i2c器件數量,只受總線(xiàn)最大電容400pf的限制,而且最高通信速率可以達到3.4mb/s,由于i2c接口簡(jiǎn)單,使用方便,被很多芯片采用,成為一種廣泛應用的接口[1]。

dsp即數字信號處理器,是一種廣泛應用的嵌入式處理器,主要應用是實(shí)時(shí)快速地實(shí)現各種數字信號處理算法,目前,國際主要的dsp供應商是ti公司,其tms32系列產(chǎn)品占據了dsp市場(chǎng)近一半的份額,為了用戶(hù)能方便快捷的進(jìn)行系統的開(kāi)發(fā)與集成,ti公司在一些型號的dsp中集成了i2c通信,本文以tms320c6713為例,使用ti公司dsp開(kāi)發(fā)工具ccs2.2提供的csl(chip support lib,片級支持庫)配置i2c。

圖像采集和處理是dsp應用的一個(gè)重要領(lǐng)域,本文結合作者開(kāi)發(fā)的基于dsp的圖像采集、處理系統、以cmos圖像采集芯片ov7620為例,介紹dsp芯片通過(guò)i2c對i2c設備進(jìn)行配置的過(guò)程。

1 ti公司帶i2c接口的dsp

在嵌入式系統開(kāi)發(fā)過(guò)程中,如果處理器沒(méi)有i2c接口而系統中又存在i2c器件時(shí),通用的辦法是利用處理器的兩根引腳分別模擬sda和scl信號,并利用程序模擬接口,這種方法的通用性好,靈活可靠,但是移植性差,不同型號的處理器需要不同的程序,盡管在網(wǎng)上能夠下載到這類(lèi)程序的源代碼,但是進(jìn)行程序移植仍會(huì )浪費開(kāi)發(fā)人員大量的時(shí)間,而且使得程序變得龐大,不易維護。

為了用戶(hù)能方便快捷地進(jìn)行系統的開(kāi)發(fā)與集成,ti公司在一些型號的dsp中集成了i2c通信模塊,例如tms320c6713、tms320c6416、tms320c5509等。

tms320c6713是一款高性能浮點(diǎn)dsp,內部集成2個(gè)i2c接口:i2c0和i2c1。其中,i2c1的引腳與mcbsp1(multichannel buffered serial port 1,多通道緩存串口1)的引腳復用,默認情況下是激活mcbsp1,使用i2c1必須將寄存器devcfg的最低位置1[2,3]。i2c模塊的結構如圖1所示。

本文引用地址:http://dyxdggzs.com/article/21182.htm

i2cdxr是發(fā)送緩存,i2cxsr是發(fā)送移位寄存器??偩€(xiàn)上的數據送到i2cdxr之后,被拷貝到i2cxsr,按位移出,送到sda,先移出的位是最高位。i2cdrr與i2crsr分別是接收緩存和接收移位寄存器,負責將sda上的數據移入,合并成字節后,放到接收緩存,并將數據發(fā)送到數據總線(xiàn)。

i2c模塊有5種狀態(tài)會(huì )產(chǎn)生中斷信號,作為中斷源提供給dsp中斷系統調用,這5種狀態(tài)是:準確好發(fā)送數據、準確好接收數據、可以訪(fǎng)問(wèn)寄存器、主機沒(méi)收到響應信號和總線(xiàn)仲裁失敗。因為i2c模塊能夠提供中斷信號,可以編制中斷處理函數,中斷中相應i2c事件,確保了響應的實(shí)時(shí)性。

i2c模擬還可以與edma(enhanced direct memory access,增強型內存直接訪(fǎng)問(wèn))配合工作。當數據由i2cdxr拷貝到i2cxsr或由i2crsr拷貝到i2cdrr時(shí),都會(huì )觸發(fā)edma操作,edma會(huì )發(fā)送下一個(gè)數據或讀取收到的數據。由于edma操作不占用dsp處理時(shí)間,可以大大提高dsp的運算速度,避免流水線(xiàn)被不停的打斷,因此,如果使用i2c模塊與外設進(jìn)行數據量比較大的數據交換,比如,將緩存中的大量數據保存到i2c接口的flash中,可以使用edma操作,如果交換的數據量比較小,而對實(shí)時(shí)性比較高,比如,接收i2c接口傳感器的采集數據,可以采用dsp中斷的方式;如果交換的數據量比較小,對實(shí)時(shí)性要求又不高,比如,對i2c設備進(jìn)行設置,則可以使用dsp查詢(xún)狀態(tài)位的方式,本文例程使用i2c模塊配置ov7620,采用查詢(xún)方式。

為使i2c模塊正常工作,必須為其提供驅動(dòng)時(shí)鐘,在tms320c6713中,i2c模塊的時(shí)鐘由系統時(shí)鐘經(jīng)分頻得到,如圖2所示。

外接時(shí)鐘為dsp系統的外接時(shí)鐘,本文設計的系統時(shí)鐘頻率為25mhz,pll為系統的鎖相環(huán),先對外接時(shí)鐘分頻,再倍頻,鎖定時(shí)鐘,然后按照不同的分頻系數,分出三個(gè)時(shí)鐘,供tms320c6713使用,其中的一個(gè)輸出到i2c模塊,i2c模塊先根據ipsc的值將時(shí)鐘預分頻,分頻后的時(shí)鐘供i2c模塊使用,同時(shí),根據iccl與icch的值再將時(shí)鐘分頻,分別控制scl的低電平與高電平周期,scl的頻率為

在配置i2c模塊之前,必須配置pll。tms320c6713的i2c不支持高速模式,一般配置在標準模式下。

2 使用csl配置i2c模塊

對i2c模塊的控制是通過(guò)操作控制/狀態(tài)寄存器組實(shí)現的。tms320c6713的寄存器映射到地址空間,可以通過(guò)地址操作直接讀寫(xiě)寄存器,如
#define i2cmdr0 0x01b40024
*(volatile unsigned int *)i2cmdr0&=~0x20;

通過(guò)地址操作讀寫(xiě)寄存器,語(yǔ)法簡(jiǎn)單,編譯效率高,但是程序的可讀性和可移植性差,不易維護。

在dsp應用系統中,一般會(huì )涉及到大量dsp器件,特別是片上外設的編程處理工作,在開(kāi)發(fā)初期消耗了開(kāi)發(fā)人員較多精力,ti公司在開(kāi)發(fā)環(huán)境ccs中,提供了csl。多數csl模塊都由對應的函數、宏、類(lèi)和表示符號組成??梢院?jiǎn)單方便地完成對dsp器件片上外設配置和控制的編程工作,從而簡(jiǎn)化dsp片上外設開(kāi)發(fā)工作,縮短了開(kāi)發(fā)周期,具有標準化控制和管理片上外設的能力,減少了dsp硬件特殊性對用戶(hù)程序代碼的影響,方便用戶(hù)在不同器件間進(jìn)行代碼移植。但是使用csl進(jìn)行外設控制對用戶(hù)代碼執行效率可能會(huì )造成一些影響[4]。

本文先給出配置pll的程序,再給出配置i2c模塊的程序,因為dsp電路板的時(shí)鐘并不相同,pll配置程序并不具有很強的可移植性,同時(shí)為了提高編譯、執行效率,配置pll的程序采用直接地址操作的方式,寄存器的宏定義請參考相應的dsp數據手冊。本例程參考了文獻[2],dsp系統的外接時(shí)鐘為25mhz。


注意,dsp系統的內部時(shí)鐘大部分來(lái)自于pll,pll設置程序必須放在全部的最前面,只有對pll配置成功,系統才能正常的工作。

提供時(shí)鐘之后,可以對i2c模塊進(jìn)行配置。本文將i2c0配制成主機發(fā)送模式,工作頻率為100khz,非連續發(fā)送,7位地址。因為本程序是為配置ov7620作準備,所以并沒(méi)有使用edma與dsp中斷。

注意,i2c0在發(fā)送一個(gè)字節后,自動(dòng)緩緩到主機接收模式,為了驗證i2c0工作是否正常,可以將i2c0與i2c1環(huán)接。

本例程只提供配置i2c模塊所需的頭文件。

3 使用i2c模塊配置ov7620

omnivision公司推出的cmos彩色圖像傳感器ov7620,最大分辨率為664×492,不但能工作在逐行掃描方式下,也能工作在隔行掃描方式下,可通過(guò)i2c總線(xiàn)配置片內寄存器,以使其輸出rgb原始數據,本文設計的系統加電復位后,先由tms320c6713產(chǎn)生i2c總線(xiàn)信號來(lái)對ov7620工作寄存器進(jìn)行初始化,然后ov7620即可開(kāi)始按要求輸出圖像信號,包括行同步信號href、場(chǎng)同步信號vsync、像素時(shí)鐘信號pclk和數字圖像信號[5]。dsp通過(guò)edma接收原始圖像數據,進(jìn)行中值濾波,去掉噪聲,再進(jìn)行有關(guān)的圖象處理,下面給出ov7620的初始化程序。

ov7620initial()函數的4個(gè)參數分別為cmos感光區域起始點(diǎn)和區域范圍,i2c_setov7620()為自定義的函數,通過(guò)i2c發(fā)送兩個(gè)數據,第一個(gè)數據為ov7620的寄存器地址,第二個(gè)數據為寄存器內容。

4 結論

本文介紹了i2c總線(xiàn)規范,以tms320c6713為例,說(shuō)明ti一些dsp中i2c模塊的結果及各部分的功能,介紹了如何配置dsp的pll及系統時(shí)鐘;給出了開(kāi)發(fā)環(huán)境ccs中csl的使用方法,對tms320c6713的i2c模塊進(jìn)行了配置,對ov7620進(jìn)行了配置。




關(guān)鍵詞: 模塊

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>