1. 写在前面  

  今天下午做了一个C5509A和C6748两个DSP的数据传输,经由RF24L01设备传输,都是模拟SPI协议,对于两个DSP来说,无非是配GPIO引脚,写好时序和延时。C5509A的GPIO口配置比较好说,关键是C6748的引脚实在是不好弄,网上也没有太多的资料,而且对于C6748来说,不一样厂家生产出来的Demo板子,编程库也是不一样的,我用的是RK的板子,经过一下午的研究,反正配置是学会了。过几天在TI上下载C6748的原库重新编一下。

2. C5509A的GPIO口配置

  C5509A有CSL编程标准库,#include "csl_gpio.h",按照API文档写没什么太大难度。在本设计中的C5509A用的是普通IO口,没用HGPIO和MCBSP的GPIO。使用普通IO口也就是GPIO0-GPIO7(非BGA封装没有GPIO5)不需要像C2000系列一样配置MUX寄存器,直接可以用宏函数操作。

2.1 方向配置

  方向配置可以单个配置也可以一起配置。

2.1.1 单个配置

  函数GPIO_pinDirection(Uint32 mask, Uint16 value);

GPIO_pinDirection( GPIO_PIN0,  );                // 配置GPIO0号为输入方向
GPIO_pinDirection( GPIO_PIN1, ); // 配置GPIO1号为输出方向

2.1.2 一起配置

  宏函数GPIO_RSET(IODIR,0x80); 高位对应GPIO7,低位对应GPIO0,可以一起赋值。

GPIO_RSET(IODIR,0x80);   // 7 6 5 4 3 2 1 0

2.2 写操作

2.2.1 单个写操作

GPIO_pinWrite( GPIO_PIN3, );        // gpio3口拉高
GPIO_pinWrite( GPIO_PIN4, ); // GPIO4口拉低

2.2.2 整体写操作

GPIO_RSET(IODAT,0xFF);            // GPIO7-GPIO0 全部写高

2.3 读操作

GPIO_pinRead( GPIO_PIN3 );            // 读GPIO3 引脚的电平,前提是GPIO3配置为输入引脚

2.4 小结

  以上就为对于C5509A的GPIO口配置,通过这样的配置我们可以模拟很多时序了,也可以驱动很多外设传感器。至于高端的无缝接口尚未研究。先研究到这里。类似的,本设计中需要模拟RF24L01的时序,对于几个引脚CE,IRQ,MOSI,MISO,SCK,CSN都需要占用GPIO口,本文设计就分配了GPIO0-GPIO7的引脚,宏定义如下:

//==============================================================================
#define RF24L01_CE_0 GPIO_pinWrite( GPIO_PIN4,0 )
#define RF24L01_CE_1 GPIO_pinWrite( GPIO_PIN4,1 )
//=============================RF24L01_CSN端口==================================
#define RF24L01_CSN_0 GPIO_pinWrite( GPIO_PIN6,0 )
#define RF24L01_CSN_1 GPIO_pinWrite( GPIO_PIN6,1 )
//=============================RF24L01_SCK======================================
#define RF24L01_SCK_0 GPIO_pinWrite( GPIO_PIN3,0 )
#define RF24L01_SCK_1 GPIO_pinWrite( GPIO_PIN3,1 )
//============================= RF24L01_MOSI端口================================
#define RF24L01_MOSI_0 GPIO_pinWrite( GPIO_PIN1,0 )
#define RF24L01_MOSI_1 GPIO_pinWrite( GPIO_PIN1,1 )
//=============================MISO端口=========================================
#define RF24L01_MISO_0 GPIO_pinWrite( GPIO_PIN0,0 )
#define RF24L01_MISO_1 GPIO_pinWrite( GPIO_PIN0,1 )
//==========================IRQ状态============================================
#define RF24L01_IRQ_0 GPIO_pinWrite( GPIO_PIN7,0 )
#define RF24L01_IRQ_1 GPIO_pinWrite( GPIO_PIN7,1 )
//-------------------------------------------------------------------------------

5.3 C6748的IO口配置

  C6748的GPIO口初始化程序如下。

void GPIO_INIT( void )
{
RK6748_pinmuxConfig(,0x80088808,0x80088808);            // 需要配合一个软件算出这个值。
RK6748_pinmuxConfig(,0x00800000,0x00800000);
RK6748_pinmuxConfig(,0x00800000,0x00800000);
GPIO_setDir( GPIO_BANK6, GPIO_PIN13, GPIO_INPUT ); // IRQ
GPIO_setDir( GPIO_BANK6, GPIO_PIN15, GPIO_OUTPUT ); // MOSI
GPIO_setDir( GPIO_BANK6, GPIO_PIN1, GPIO_OUTPUT ); // CSN
GPIO_setDir( GPIO_BANK6, GPIO_PIN11, GPIO_INPUT ); // MISO
GPIO_setDir( GPIO_BANK6, GPIO_PIN12, GPIO_OUTPUT ); // SCK
GPIO_setDir( GPIO_BANK0, GPIO_PIN8, GPIO_OUTPUT ); // CE
printf("GPIO initi finish! \n");
}

  

最新文章

  1. 解决Get请求的长度限制
  2. StarUml:Exception EOleSysError in module StarUML.ex
  3. JavaScript进阶内容1:各种对象类型判断
  4. android asyncTask 详解
  5. 用终端直接在桌面生成text文件
  6. python----脚本文件的头部写法。
  7. POJ 2406 Power Strings(KMP)
  8. 《Network Security A Decision and Game Theoretic Approach》阅读笔记
  9. Maven-Build Lifecycle(构建生命周期)
  10. nodejs 数据库操作,消息的发送和接收,模拟同步
  11. (4.3)mysql备份还原——mysql备份策略
  12. Codeforces 855C. Helga Hufflepuff's Cup----树形DP
  13. HDU 4764 Stone (巴什博弈)
  14. numpy转换
  15. P5242 [USACO19FEB]Cow Dating
  16. [Python 模块] logging模块、Logger类
  17. Period II FZU - 1901(拓展kmp)
  18. bWAPP练习--injection篇之HTML Injection - Reflected (POST)
  19. HDU 4691 Front compression (2013多校9 1006题 后缀数组)
  20. 升级PHP版本导致zabbix无法访问解决办法

热门文章

  1. greenplum导数据
  2. March 4 2017 Week 10 Saturday
  3. CSS基础语法(一) CSS的3种引入
  4. [原]Machine Learing 入门 —— 开门第0篇
  5. 测试笔记:jsonp跨域接口测试
  6. 为什么A经理的团队总是会陷入加班与救火之中
  7. Uva 10217 概率
  8. 在文本框输入数据后,因为有历史记录,鼠标点或者敲回车这个历史记录时,请问会触发什么JS事件
  9. Very Deep Convolutional Networks for Large-scale Image Recognition(vggnet)
  10. centos7 编译安装nginx1.16.0( 完整版 )