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

DM8168 裸机调试GPIO作为普通IO输出 ,设置PINCTRLn寄存器设置不成功

大家好,新人报道。      本人调试DM8168的GPIO时,将设置值写入寄存器后,查看寄存器值 未成功写入。使用调试环境是CCS 5.5.0。

  1、时钟频率设置使用默认evm816x.gel设置     ( Fin=27MHz晶体)

   2、实现功能是GP1[1]口作为 输出口,输出高低电平。

  3、个人思路:1、设置CM_ALWON_GPIO_1_CLKCTR      *(unsigned int *)0x48141560 = 0x02;  //

                         2、设置GPIO_SYSCONFIG                          *(unsigned int *)0x4804c010 = 0x19;     

                         3、设置GPIO_CTRL                                      *(unsigned int *)0x4804c130 =0x04;  //  

                         4、设置GP1[1]为输出                                      *(unsigned int *)0x4804c134 &= 0xfffffff9;  //

                         5、配置PINCTRL158复用引脚为GP1[1]          *(unsigned int *)0x48140a74 = 0x0a;  //GP1[1] 不可以写入

JTAG调试时,通过查看memory方法,查看相应寄存器内容。发现CM_ALWON_GPIO_1_CLKCTR     、PINCTRL158 写入失败,而其他成功写入。想请教一下,设置这两个寄存器有什么特定要求吗?我的思路是否有不妥的地方,请指正。谢谢

 

 

Chris Meng:

你好,

请使用gel来配置PINCTRL相关寄存器,因为这些寄存器需要在supervisor mode下才能写入。

hailin li:

回复 Chris Meng:

你好。首先感谢你的悉心回答。 基于你的解答,有两点疑问,希望得到你的帮助。

1、DM816X的技术参考手册中提到supervisor mode,好像主要适用于ARM中断控制  (AINTC Registers)。

2、假设测试程序将GP1[1]修改 SD_CLK,是不是将测试程序设置成supervisor mode ,然后设置PINCTRL?

谢谢

hailin li:

回复 Chris Meng:

Chris Meng :

                    你好。我在gel配置中,增加了GP1[1]引脚配置,具体详见如下:

                    #define conf_gp1_io1                    (CTRL_MODULE_BASE_ADDR + 0x0A74)

                    WR_MEM_32(conf_gp1_io1     , 2); 

在JTAG调试时,查看PINCTRL158寄存器如下(寄存器中存储值是0x08,模式2未写入成功),发现还是无法配置PINCTRL158。请您帮忙,分析一下。谢谢

                

 

Chris Meng:

回复 hailin li:

你好,

你应该是没有把GP1的电源打开。请参考讨论:http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/t/153934.aspx。

hailin li:

回复 Chris Meng:

你好。还要麻烦你了。

         在ge源l文件中有 设置GP1时钟和电源程序:

       WR_MEM_32(0x48181560,               0x102); // Enable GPIO1 Clock    

        while((RD_MEM_32(0x48181560) & 0x3) !=0x2);

        通过JTAG查看内存可知,将0X102写入到CM_ALWON_GPIO_1_CLKCTRL寄存器中。

    

 

Chris Meng:

回复 hailin li:

你好,

请问你是否有运行下面的代码?

hotmenu GPIO1_EnableLvcmosPadN_PadPReceiver(){#define MLBP_SIG_IO_CTRL_FOR_GPb7b8                0x48140E18#define MLBP_SIG_IO_CTRL_FOR_GPb9b10               0x48140E1c#define MLBP_SIG_IO_CTRL_VAL                       0x3F //set 3LSB to enable: 2 lvcmos buffer, padn receiver, padp receiver          WR_MEM_32(MLBP_SIG_IO_CTRL_FOR_GPb7b8,   MLBP_SIG_IO_CTRL_VAL);                         WR_MEM_32(MLBP_SIG_IO_CTRL_FOR_GPb9b10,  MLBP_SIG_IO_CTRL_VAL);                         }

hailin li:

回复 Chris Meng:

Chris Meng :你好。

              我准备运行上面代码,发现MLBP_SIG_IO_CTRL(对应地址0x48140E18)和MLBP_DAT_IO_CTRL(对应地址0x48140E1c) 属于DM814x系列,而我使用的是DM816x系列(DM8168),他们两者之间寄存器有些差别。还是很感谢你的指导。  之前,有没有其他用户遇到,我这样GPIO无法设置输出的问题? 谢谢

Chris Meng:

回复 hailin li:

你好,

抱歉,我提供的gel的确是真的DM814x的。

你能否把步骤5放到步骤1之前?我在网上找到一个配置例子:http://m.blog.csdn.net/blog/mianhuantang848989/13504153.

hailin li:

回复 Chris Meng:

 Chris Meng:你好。

我将步骤5放到步骤1之前,重新测试程序。结果GP1[1]还是不能输出.具体原因,会继续查找,找到后分享出来。非常感谢你的悉心解答。

赞(0)
未经允许不得转载:TI中文支持网 » DM8168 裸机调试GPIO作为普通IO输出 ,设置PINCTRLn寄存器设置不成功
分享到: 更多 (0)