小白能读懂的 《手把手教你学DSP(TMS320X281X)》第六章 使用c语言操作dsp寄存器(以SCI为例进行说明))
目錄
?
1 c語(yǔ)言與匯編語(yǔ)言器
2 配置SCI寄存器
2.1 了解SCI寄存器
2.2 使用位定義的方法定義寄存器
2.2.1 位域
2.2.2 聲明共同體
2.2.3 結(jié)構(gòu)體
2.2.4 查看寄存器的值
2.3 寄存器文件空間分配
本節(jié)內(nèi)容看懂之后主要是頭文件程序的解析。
?
1 c語(yǔ)言與匯編語(yǔ)言器
一些對(duì)時(shí)間要求特別高的時(shí)候需要嵌入一些匯編語(yǔ)言,其他時(shí)候使用c語(yǔ)言通過位定義和寄存器結(jié)構(gòu)體的方式來(lái)實(shí)現(xiàn)對(duì)dsp寄存器進(jìn)行訪問和控制。
2 配置SCI寄存器
2.1 了解SCI寄存器
前面我們講過2812有兩個(gè)SCI寄存器(SCIA和SCIB),可以做成兩個(gè)串口(2RS232/2RS484/RS232+RS485)
- 首先我們查看寄存器的寄存器文件
以SCIA為例,第一列表示他有13個(gè)寄存器可以操作,并且都以SCI開頭進(jìn)行命名;第二列表示地址,即該寄存器所在的位置;后面的占用空間表示這個(gè)地址內(nèi)的數(shù)據(jù)寬度,通過更改這些寄存器的數(shù)據(jù)就可以改變相應(yīng)寄存器的功能。注意寄存器地址非連續(xù),有缺失值。
2.2 使用位定義的方法定義寄存器
2.2.1 位域
定義:一個(gè)字節(jié)中的二進(jìn)制位劃分為幾個(gè)不同的區(qū)域,并說明每個(gè)區(qū)域的位數(shù)。
語(yǔ)法結(jié)構(gòu)如下所示
注意:語(yǔ)法最后有分號(hào)。
注意:
1 位域聲明順序從右到左
2 位域的定義不能橫跨字節(jié)
若例6-1,中a長(zhǎng)度為5,b為3,則定義錯(cuò)誤,在此情況下b要橫跨兩個(gè)字節(jié)
3 位域不能大于8個(gè)字節(jié),否則與前面第二條沖突
4 可以沒有域名,此時(shí)的作用是調(diào)整字節(jié)的順序。如下所示
注意:保留位也需要定義。
具體位域分區(qū)如下所述:
2.2.2 聲明共同體
作用:有時(shí)候需要對(duì)整個(gè)寄存器進(jìn)行操作,這時(shí)通過聲明共同體來(lái)進(jìn)行操作;既可以對(duì)整體進(jìn)行操作,也可以按位進(jìn)行操作。
定義:
結(jié)構(gòu)體和共同體的區(qū)別:
結(jié)構(gòu)體分配空間按所有成員占據(jù)的總和來(lái)分配;
共同體的空間是共用的,如例6-3中:unit16與bit共用的是一段空間,在一個(gè)時(shí)間只有一個(gè)共同體使用。
2.2.3 結(jié)構(gòu)體
SCI中包含了很多寄存器,為了方便管理,在dsp中通過結(jié)構(gòu)體的方法來(lái)實(shí)現(xiàn)。
注意:
結(jié)構(gòu)體當(dāng)中有很多union共同體,既可以整體對(duì)寄存器進(jìn)行操作,也可以對(duì)寄存器進(jìn)行位操作;但unit16類型的只能進(jìn)行寄存器操作。
保留項(xiàng)也被定義了,用rsvd代替,但沒有用處。
在定義結(jié)構(gòu)體之后,需要聲明SciaRegs和ScibRegs,表示scia與scib寄存器;關(guān)鍵字extern代表全局變量;volatile表示寄存器的值易變,可以被外部硬件和外部代碼改變,但如果沒有這個(gè)關(guān)鍵字,則該寄存器的值只能被程序代碼改變。
函數(shù)調(diào)用:
代碼分析:
SciaRegs.SCICCR.bit.STOPBITS
首先SciaRegs.SCICCR這一段代碼是結(jié)構(gòu)體定義的,
找SCICCR的聲明
下一位SciaRegs.SCICCR.bit,從函數(shù)聲明處得知函數(shù)原來(lái)應(yīng)該是SCICCR_REG,在共同體中存在的下一位bit,他是位域定義,找他的聲明處
順藤摸瓜也就找到了SciaRegs.SCICCR.bit.STOPBITS寄存器
union共同體,既可以整體對(duì)寄存器進(jìn)行操作(.all),也可以對(duì)寄存器進(jìn)行位操作(.bit);但unit16類型的只能進(jìn)行寄存器操作,如下所示:
2.2.4 查看寄存器的值
2.3 寄存器文件空間分配
why:代表寄存器的變量如何與物理寄存器結(jié)合起來(lái)的?
總結(jié)
以上是生活随笔為你收集整理的小白能读懂的 《手把手教你学DSP(TMS320X281X)》第六章 使用c语言操作dsp寄存器(以SCI为例进行说明))的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: skyline软件_正射影像、倾斜摄影测
- 下一篇: 逆滤波和维纳滤波