您好,欢迎来到61ic! | [登录] [注册] 忘记密码 | 设为首页 帮助
 . 网站首页 . 业界新闻 . 设计中心 . 移动技术 . TI专栏 . ADI专栏 . FPGA专栏 . 代码工厂 . 官方商城 . 
 . 活动专区 . 新品快递 . 解决方案 . 前沿科技 . TI资源 . ADI资源 . FPGA资源 . 下载中心 . 产品展示 . 
加入收藏
付款方式
联系我们
您现在的位置: 61IC电子在线 >> TI专栏 >> TI DaVinci >> TMS320DM81x SOC >> 正文
  DM8168硬件调试-GPIO           ★★★ 【字体:
DM8168硬件调试-GPIO
作者:swat    文章来源:swat    点击数:    更新时间:2014-9-25    

一、调试目的及相关知识

        目的:使能GP1[1]引脚作为输出IO,输出高低电平。

        相关知识:1、谁为GPIO供电?       ( alwon电源域)

                          2、谁为GPIO提供时钟?(  

                               由两种时钟源:1、SYSCLK6提供interface clock  

                                                        2、SYSCLK18 提供Debounce Functional clock  应用消抖 )

二、硬件图

     

                                  由上图可知将U2复用引脚配置成 GP1[1]功能

三、软件

基本思路:

 第一步:电源、时钟

          GPIO使用alwon电源域,始终供电(只要开发板上电)。而GPIO时钟在evm816x.gel文件中开启。

 

[csharp] view plaincopy在CODE上查看代码片派生到我的代码片
01.Setup_PRCM() 
02.{ 
03........................................................ 
04.    /* Enable the OCMC1RAM Clocks */ 
05.................................. 
06.    WR_MEM_32(CM_ALWON_L3_SLOW_CLKSTCTRL, 0x2); // Enable the Power Domain Transition of L3 Slow Domain Peripheral 
07.    while((RD_MEM_32(CM_ALWON_L3_SLOW_CLKSTCTRL) & 0x2) !=0x2); 
08. 
09.    while((RD_MEM_32(0x4818154c) & 0x3) !=0x2); 
10.    WR_MEM_32(0x4818155c,               0x102); // Enable GPIO0 Clock 
11.    while((RD_MEM_32(0x4818155c) & 0x3) !=0x2); 
12.    WR_MEM_32(0x48181560,               0x102); // Enable GPIO1 Clock 
13.    while((RD_MEM_32(0x48181560) & 0x3) !=0x2); 
14................................................................. 
15.    GEL_TextOut("PRCM Setup Complete\n"); 
16.} 


 

第二步:复用引脚配置

       在evm816x.gel文件配置 或用户程序中配置。

       第一种:在evm816x.gel文件中

 

[csharp] view plaincopy在CODE上查看代码片派生到我的代码片
01.Setup_PADCTRL( ) 
02.{ 
03.    GEL_TextOut( "Configuring Pad Functions...\n" ); 
04.     ................................................. 
05.    *(unsigned int *)(0x48140A74) = 0x0A; //配置成GP1[1] 
06.} 


       第二种:在用户程序中设置

       main()

      { ............................................................................

                    *(volatile Uint32 *)(0x48140A78) = 0x0A;  //配置成GP1[2]

      }

第三步:输出、数据等设置

             在用户程序中设置

 

[csharp] view plaincopy在CODE上查看代码片派生到我的代码片
01.void main( void ) 
02.{ 
03........................................................... 
04.    *(volatile Uint32 *)(0x48140A78) = 0x0A; 
05. 
06.    *(volatile Uint32 *)(0x4804C134) = 0xFFF0;//配置GPIO1_OE,设置GPIO1[3:0]为输出 
07.    while(1) 
08.    { 
09.        *(volatile Uint32 *)(0x4804C13C) = 0x0F; //配置GPIO1_DATAOUT,设置GPIO1[3:0]为高电平 
10.        EVM816X_waitmsec(50); 
11.        *(volatile Uint32 *)(0x4804C13C) = 0x00;//配置GPIO1_DATAOUT,设置GPIO1[3:0]为低电平 
12.        EVM816X_waitmsec(50); 
13.    } 
14. 
15.} 


四、现象

     GP1[1]引脚输出大约50ms方波,而GP1[2]引脚输出0.5V电平。why?

     1、 通过JTAG调试,查看复用引脚配置寄存器PINCTRL可知:查看PINCTRL158配置GP1[1]成功,而PINCTRL159配置GP1[2]失败。

而PINCTRL寄存器定义如下:

 

    2、导致原因及解决办法

      因为DM8168工作模式导致的,默认工作在usr用户模式,而有些寄存器设置(时钟配置寄存器、引脚复用寄存器等)需要在Supervisor模式设置。所以需要修改为Supervisor模式。具体操作详见:http://blog.csdn.net/hailin0716/article/details/25065549

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    DM8168裸机调试-GPMC+FPGA
    DM8168 各个模块的时钟源
    bmp图片文件的操作 旋转、翻…
    RDK_OSD代码走读
    DM8168集成图像算法hellowor…
    DM8168的dsp怎么调用库和arm…
    DM8168 DVRRDK-link开发讲解
    DM8168 DVRRDK开发总结
    osd-link移植的代码流程
    scd-link移植的代码流程
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61 湘ICP备13001086号-2