TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28335 GPIO 输出问题

请教专家.:

3个GPIO 设置如下:

GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0;

GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 0;

GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 0;

GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;

GpioCtrlRegs.GPADIR.bit.GPIO8 = 1;

GpioCtrlRegs.GPADIR.bit.GPIO10 = 1;

原来都是低电平. 如果这样:

GpioDataRegs.GPADAT.bit.GPIO10 = 1; 
GpioDataRegs.GPADAT.bit.GPIO7 = 1; 
GpioDataRegs.GPADAT.bit.GPIO8 = 1; 

GPIO10为高电平.另外两个还是低电平.
改成这样

GpioDataRegs.GPADAT.bit.GPIO10 = 1; 
GpioDataRegs.GPADAT.bit.GPIO7 = 1; 
DELAY_US(1);
GpioDataRegs.GPADAT.bit.GPIO8 = 1; 
DELAY_US(1);

都是高电平.电平反过来也一样.这是怎么回事呀.是芯片问题吗?

QIUPING GUO:

回复 Eric Ma:

Eric

按你说的修改了.我具体是TMS32F2812和F28335连接如下:.

GPIO8 <->GPIOA1; GPIO10<->GPIOA2

代码如下:

F28335端

GpioDataRegs.GPACLEAR.bit.GPIO8  = 1;

GpioDataRegs.GPACLEAR.bit.GPIO10  = 1;

……………………….

GpioDataRegs.GPASET.bit.GPIO8  = 1;

GpioDataRegs.GPACLEAR.bit.GPIO10  = 1;

F2812端:

interrupt void MY_XINT2_ISR(void)

{

    if  (GpioDataRegs.GPADAT.bit.GPIOA1 == 1)

   {

       GpioDataRegs.GPBSET.bit.GPIOB6 = 1; // TO F335_XINT3

      / / READ XINTF 0x0E1000

     GpioDataRegs.GPBCLEAR.bit.GPIOB6 = 1; // TO U1_XINT1  }

  if  (GpioDataRegs.GPADAT.bit.GPIOA2 == 1)

 {

    XINTF_BUFF = 0;

 }

}

问题是有时可以,有时不行.开始仿真时可以,再次仿真就不行.不行时观察.GPADAT.bit.GPIOA1 和 .GPADAT.bit.GPIOA2 一直不会改变.F2812程序运行判断结果与观察相符.F28335的 GPIO8,和 GPIO10 输出电平的改变是由F2812端引发. 中断请求信号是由F28335发出.从F2812端程序运行情况看.F28335断程序运行正常.(采用写DAT寄存器的方法结果也一样).为什么会这样.是做法不对还是别的原因.请给予指教.谢谢

请教专家.:

3个GPIO 设置如下:

GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0;

GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 0;

GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 0;

GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;

GpioCtrlRegs.GPADIR.bit.GPIO8 = 1;

GpioCtrlRegs.GPADIR.bit.GPIO10 = 1;

原来都是低电平. 如果这样:

GpioDataRegs.GPADAT.bit.GPIO10 = 1; 
GpioDataRegs.GPADAT.bit.GPIO7 = 1; 
GpioDataRegs.GPADAT.bit.GPIO8 = 1; 

GPIO10为高电平.另外两个还是低电平.
改成这样

GpioDataRegs.GPADAT.bit.GPIO10 = 1; 
GpioDataRegs.GPADAT.bit.GPIO7 = 1; 
DELAY_US(1);
GpioDataRegs.GPADAT.bit.GPIO8 = 1; 
DELAY_US(1);

都是高电平.电平反过来也一样.这是怎么回事呀.是芯片问题吗?

Eric Ma:

回复 QIUPING GUO:

QIUPING,

我觉得你先分开调试,先用F28335设置GPIO8,10的电平,然后观察GPIOB6的变化,再做下一步的测试。

我认为主要是要小心GPIODAT的读修改写指令就可以了。

Eric

请教专家.:

3个GPIO 设置如下:

GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0;

GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 0;

GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 0;

GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;

GpioCtrlRegs.GPADIR.bit.GPIO8 = 1;

GpioCtrlRegs.GPADIR.bit.GPIO10 = 1;

原来都是低电平. 如果这样:

GpioDataRegs.GPADAT.bit.GPIO10 = 1; 
GpioDataRegs.GPADAT.bit.GPIO7 = 1; 
GpioDataRegs.GPADAT.bit.GPIO8 = 1; 

GPIO10为高电平.另外两个还是低电平.
改成这样

GpioDataRegs.GPADAT.bit.GPIO10 = 1; 
GpioDataRegs.GPADAT.bit.GPIO7 = 1; 
DELAY_US(1);
GpioDataRegs.GPADAT.bit.GPIO8 = 1; 
DELAY_US(1);

都是高电平.电平反过来也一样.这是怎么回事呀.是芯片问题吗?

QIUPING GUO:

分开调试也是一样的.看来只能改变控制方式了.

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28335 GPIO 输出问题
分享到: 更多 (0)