VC55系列的DSP的寄存器在C语言中是如何寻址的?

[复制链接]
2668|2
 楼主| bin3101 发表于 2007-10-27 21:45 | 显示全部楼层 |阅读模式
哪位大哥知道VC55系列的DSP的片内外设寄存器(比如McBSP和UART)在C语言中是如何寻址的?<br />
wowow 发表于 2007-10-27 23:23 | 显示全部楼层

*(ioport volatile unsigned int *)

/*********************************************************************/<br />/*&nbsp;Register&nbsp;Definition&nbsp;&nbsp;MCBSP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />/*********************************************************************/<br /><br />#define&nbsp;DRR2_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0x2800+(0x400*port))<br />#define&nbsp;DRR2(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)DRR2_ADDR(port)<br /><br />#define&nbsp;DRR1_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+1)<br />#define&nbsp;DRR1(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)DRR1_ADDR(port)<br /><br />#define&nbsp;DXR2_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+2)<br />#define&nbsp;DXR2(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)DXR2_ADDR(port)<br /><br />#define&nbsp;DXR1_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+3)<br />#define&nbsp;DXR1(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)DXR1_ADDR(port)<br /><br />#define&nbsp;SPCR2_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+4)<br />#define&nbsp;SPCR2(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)SPCR2_ADDR(port)<br /><br />#define&nbsp;SPCR1_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+5)<br />#define&nbsp;SPCR1(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)SPCR1_ADDR(port)<br /><br />#define&nbsp;RCR2_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+6)<br />#define&nbsp;RCR2(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)RCR2_ADDR(port)<br /><br />#define&nbsp;RCR1_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+7)<br />#define&nbsp;RCR1(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)RCR1_ADDR(port)<br /><br />#define&nbsp;XCR2_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+8)<br />#define&nbsp;XCR2(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)XCR2_ADDR(port)<br /><br />#define&nbsp;XCR1_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+9)<br />#define&nbsp;XCR1(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)XCR1_ADDR(port)<br /><br />#define&nbsp;SRGR2_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+10)<br />#define&nbsp;SRGR2(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)SRGR2_ADDR(port)<br /><br />#define&nbsp;SRGR1_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+11)<br />#define&nbsp;SRGR1(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)SRGR1_ADDR(port)<br /><br />#define&nbsp;MCR2_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+12)<br />#define&nbsp;MCR2(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)MCR2_ADDR(port)<br /><br />#define&nbsp;MCR1_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+13)<br />#define&nbsp;MCR1(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)MCR1_ADDR(port)<br /><br />#define&nbsp;RCERA_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+14)<br />#define&nbsp;RCERA(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)RCERA_ADDR(port)<br /><br />#define&nbsp;RCERB_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+15)<br />#define&nbsp;RCERB(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)RCERB_ADDR(port)<br /><br />#define&nbsp;XCERA_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+16)<br />#define&nbsp;XCERA(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)XCERA_ADDR(port)<br /><br />#define&nbsp;XCERB_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+17)<br />#define&nbsp;XCERB(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)XCERB_ADDR(port)<br /><br />#define&nbsp;PCR_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+18)<br />#define&nbsp;PCR(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)PCR_ADDR(port)<br /><br />#define&nbsp;RCERC_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+19)<br />#define&nbsp;RCERC(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)RCERC_ADDR(port)<br /><br />#define&nbsp;RCERD_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+20)<br />#define&nbsp;RCERD(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)RCERD_ADDR(port)<br /><br />#define&nbsp;XCERC_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+21)<br />#define&nbsp;XCERC(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)XCERC_ADDR(port)<br /><br />#define&nbsp;XCERD_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+22)<br />#define&nbsp;XCERD(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)XCERD_ADDR(port)<br /><br />#define&nbsp;RCERE_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+23)<br />#define&nbsp;RCERE(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)RCERE_ADDR(port)<br /><br />#define&nbsp;RCERF_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+24)<br />#define&nbsp;RCERF(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)RCERF_ADDR(port)<br /><br />#define&nbsp;XCERE_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+25)<br />#define&nbsp;XCERE(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)XCERE_ADDR(port)<br /><br />#define&nbsp;XCERF_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+26)<br />#define&nbsp;XCERF(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)XCERF_ADDR(port)<br /><br />#define&nbsp;RCERG_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+27)<br />#define&nbsp;RCERG(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)RCERG_ADDR(port)<br /><br />#define&nbsp;RCERH_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+28)<br />#define&nbsp;RCERH(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)RCERH_ADDR(port)<br /><br />#define&nbsp;XCERG_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+29)<br />#define&nbsp;XCERG(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)XCERG_ADDR(port)<br /><br />#define&nbsp;XCERH_ADDR(port)&nbsp;&nbsp;&nbsp;&nbsp;(DRR2_ADDR(port)+30)<br />#define&nbsp;XCERH(port)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(ioport&nbsp;volatile&nbsp;unsigned&nbsp;int&nbsp;*)XCERH_ADDR(port)<br />
 楼主| bin3101 发表于 2007-10-28 20:27 | 显示全部楼层

多谢仁兄

多谢这位仁兄!我想再问一下:&nbsp;如果是对MCBSP0的寄存器寻址,第一行地址就写0x2800,如果是对MCBSP1的寄存器寻址,那地址就是0x2c00了?为什么第一行是寄存器DRR2,而不是DRR1呢?看手册上(TMS320VC5502)DRR1的地址在前面,另外第一行的0x400*port是什么意思?小弟是在校学生,第一次接了DSP的项目,很多不会,还望仁兄指教&nbsp;&nbsp;&nbsp;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部