dsp2812 怎么对io口操作
我是dsp小白,请问怎么对dsp2812的xa和xd管脚操作。比如我看到一个键盘程序,其中看起来跟管脚有关的好像是#defineled_7seg(*((unsignedi...
我是dsp小白,请问怎么对dsp2812的xa和xd管脚操作。比如我看到一个键盘程序,其中看起来跟管脚有关的好像是#define led_7seg (*((unsigned int *)0x02400)),莫非那个0x02400就是xd1~xd7的地址?那其他管脚地址呢,还是他自己定义分配的?如果是他定义的怎么看?在那个c文件源里还是h的头文件里?
或者操作语句是像GpioDataRegs.GPATOGGLE.all = 0xffff;这样的?那xa[0]~xa[18]和xd[0]~xd[15]这两组的名字是什么?在datasheet哪部分有讲,找了半天找不到啊。这一块搞不清楚啊,求大神讲解下。顺便求解io口需要设置输入输出模式吗?像msp430那样是要先设的,dsp也这样吗?
还有请问dsp2812的所有管脚除了电源、地之外都能随便用吗?像pwm管脚、adc管脚我之前用过,但他们有普通IO口的功能吗? 展开
或者操作语句是像GpioDataRegs.GPATOGGLE.all = 0xffff;这样的?那xa[0]~xa[18]和xd[0]~xd[15]这两组的名字是什么?在datasheet哪部分有讲,找了半天找不到啊。这一块搞不清楚啊,求大神讲解下。顺便求解io口需要设置输入输出模式吗?像msp430那样是要先设的,dsp也这样吗?
还有请问dsp2812的所有管脚除了电源、地之外都能随便用吗?像pwm管脚、adc管脚我之前用过,但他们有普通IO口的功能吗? 展开
2个回答
展开全部
0x02400 在2812的地址空间里是外设空间ZONE0的地址,即对led_7seg操作就是对外设的操作,你看看这个程序对应的硬件上2812的/XZCS0AND1这个管脚(2812的第44管脚)连的哪个芯片,而且0x02400在二进制里是0010 0100 0000 0000,也就是操作此地址时Xa[10]和XA[13]是高电平,简单地说就是led_7seg这个变量一改/XZCS0AND1就生效(这是你板子上的一个芯片的片选信号),同时Xa[10]和XA[13]变为高电平,具体还要看电路。
xa[0]~xa[18]是外设地址线(XINTF Address bus),xd[0]~xd[15]是外设数据线(XINTF Data bus)
普通I/O配置很简单,顺序如下:1有复用的管脚要先配置成I/O模式,2配置成输入或输出3如果配成输出的话设置初始状态值
PWM脚和ADC脚有I/O功能。
有不对的地方还请指正。
xa[0]~xa[18]是外设地址线(XINTF Address bus),xd[0]~xd[15]是外设数据线(XINTF Data bus)
普通I/O配置很简单,顺序如下:1有复用的管脚要先配置成I/O模式,2配置成输入或输出3如果配成输出的话设置初始状态值
PWM脚和ADC脚有I/O功能。
有不对的地方还请指正。
追问
就是想问一下我要把xa和xd当普通io操作的话要在程序里怎么写,有没有什么变量名代表xa和xd的端口,还是说dsp不能这样用。那个led-7seg是他自己定义的变量,它和具体哪些管脚(本程序应该是xd0~xd7)是怎么联系起来的,不是通过0x02400这样的地址吗,还是在某个地方把led-7seg等于了某个能代表xa或者xd的变量名。接触dsp较少,不知道理解的是不是对的,麻烦了
追答
我查了一下2812的手册,XA和XD两个总线的端口都不是I/O复用口,正常来讲不能通过寄存器配置成普通I/O。要想作为I/O来用有些麻烦。
led-7seg是他定义的一个地址映射,本身不和任何管脚有联系,但是关键是他映射到的是0x02400这个地址,这个地址是2812的外设空间,访问个地址的话2812会去动作/XZCS0AND1这个管脚
同时地址线上会有电平变化,就是我之前说的Xa[10]和XA[13]变为高电平,至于XD的变化要看他对
led-7seg赋了什么值,打个比方led-7seg=1的话XD[0]就会变为高电平。
具体还是要看电路图。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询