Chinaunix首页 | 论坛 | 博客
  • 博客访问: 30399
  • 博文数量: 11
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 29
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-24 10:57
文章分类
文章存档

2014年(11)

我的朋友

分类: 嵌入式

2014-03-24 17:19:23

原文地址:CCS调试OMAPL138的GPIO 作者:xjf616

由于OMAPL138片上资源没有连接GPIOLED灯,查看效果只能用万用表检测相关引脚高低电平和查看CCS中各寄存器的值或者printf()语句在CCS环境中输出。

OMAP-L138是一个双核的芯片,无论是ARM核还是DSP核,都有相当数量的寄存器需要配置,如果从头开始逐一定义和设置,需要消耗大量的时间,但这又是不得不做的事。庆幸的是TI的第三方已经为我们写好芯片的寄存器定义,并把初始化和功能实现通过C函数的方式集成起来,这样我们只需要调用相关的函数,就可以实现对指定外设初始化工作和使用。
这些文件的集合体被称作BSL(Board Support Library)。它大大减少了开发初期的工作量,注释也全面,容易理解。

下面通过调用BSL函数的方式来控制GPIO口高低电平。控制的两个管脚为GP1[2]GP1[3],在SEED_DEC138的片上资源中又被复用为UART2_TXDUART2_RXD,因为这个引脚很大,用万用表测着方便,而其它引脚不是被复用为NANDFLASH的管脚就是复用DDR2的的管脚,小之又小,比较不方便。




点击(此处)折叠或打开

  1. #if NO_GEL
  2.    EVMOMAPL138_init(); //初始化芯片,PLL等
  3.    EVMOMAPL138_initRAM(); //初始化RAM,DRR等
  4. #endif
  5.   
  6.    USTIMER_init();                     //初始化CPU定时器

  7.    // TEST GPIO
  8.    //---------
  9.    EVMOMAPL138_pinmuxConfig(4, 0x00ff0000, 0x00880000);
  10.    GPIO_setDir(GPIO_BANK1, 2, GPIO_OUTPUT);
  11.    GPIO_setDir(GPIO_BANK1, 3, GPIO_OUTPUT);
  12.    GPIO_setOutput(GPIO_BANK1, 2, 0);
  13.    GPIO_setOutput(GPIO_BANK1, 3, 0);
  14. /*********************************************************************/


EVMOMAPL138_pinmuxConfig(4, 0x00ff0000, 0x00880000);

管脚复用配置,OMAPL138上一共有20的PINMUX寄存器,PINMUX是SYSCONFIG寄存器的重要组成部分,通过查询手册sprugm7d-OMAP-L138 Applications Processor System Reference Guide可以看到GP1[2]和GP2[3]分别属于PINMUX4的23-20位和19-16位,EVMOMAPL138_pinmuxConfig函数第一个参数表示第几个PINMUX,0x00ff000000表示在23-20位和19-16位中初始化,因为EVMOMAPL138_pinmuxConfig函数内部会把23-20位和19-16位清零然后在赋值为88即下一个参数0x00880000,这样就把GP1[2]和GP2[3]配置为GPIO模式,然后设置GPIO的方向和输出值即可。

 

多看多消化例程。。。。。


参考资料:


阅读(1952) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~