大家好,新人报道。 本人调试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]还是不能输出.具体原因,会继续查找,找到后分享出来。非常感谢你的悉心解答。