void InitGpio(void){// Set GPIO A port pins,AL(Bits 7:0)(input)-AH(Bits 15:8) (output) 8bits//源槐 Input Qualifier =0, none EALLOW//EVA配置 GpioMuxRegs.GPAMUX.all=0x0f0f// 配置PWM1,PWM2,PWM3,PWM4,QEP1,QEP2等的功能口 GpioMuxRegs.GPAQUAL.all=0x0000// Input qualifier disabled //配置刹车,方向控制信号 GpioMuxRegs.GPBMUX.all = 0x0000//配置为I/O口// GpioMuxRegs.GPBMUX.bit.PWM7_GPIOB0 = 0//配置为I/O口// GpioMuxRegs.GPBMUX.bit.PWM8_GPIOB1 = 0// GpioMuxRegs.GPBDIR.bit.GPIOB0 = 1//输亏裂野出引脚,电机刹车控制,break// GpioMuxRegs.GPBDIR.bit.GPIOB1 = 1//输出引脚,销喊电机方向控制,dir GpioMuxRegs.GPBDIR.all = 0xffff//配置为输出引脚 GpioMuxRegs.GPBQUAL.all=0x0000// Input qualifier disabled EDISGpioDataRegs.GPBDAT.all = 0xff00//高8位为DA输出控制制动器}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功能。唯悉知
DSP以
寄存器的方式来控制CPLD的IO口:IO口的对应DSP里面的寄存器,有自己的地址。DSP通过对这个地址的寄存器 *** 作来控制IO口。
举个例子:
比如扩展了8个输入口,然后这8个输入口的数据存储在寄存器Reg1中,Reg1对应的地址为0x90000030。你要读这个输入口信息,可以直接读这个地址的数据,即data=*(者猜Uint8
*)0x90000030.
反之,如果是输出口,可以令地址0x9000XXXX的数据位XX就行了。
而陆镇这些地址是由DSP与CPLD的连接和译码方式决定的。DSP通过地址、数据、控制线与CPLD连接,然后早嫌粗CPLD接收DSP的指令,进行译码,得到译码结果,然后输出。
要知道这些地址,最简单的还是看开发板的使用手册。
评论列表(0条)