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");
}

  

使用C6748和C5509A对nRF24L01驱动进行数据传输的更多相关文章

  1. nRF24L01+不能接收或接收偶尔异常等问题实战分享

    nRF24L01+接收异常问题综述 在调试nRF24L01+无线收发模块的时候,最具标志性的环节就是在接收端可以收到数据.在实际应用调试中,会出现很多意想不到的情况,造成nRF24L01+模块接收端无 ...

  2. linux驱动面试题2

    1.什么是GPIO? general purpose input/output GPIO是相对于芯片本身而言的,如某个管脚是芯片的GPIO脚,则该脚可作为输入或输出高或低电平使用,当然某个脚具有复用的 ...

  3. linux驱动面试题整理

    1.字符型驱动设备你是怎么创建设备文件的,就是/dev/下面的设备文件,供上层应用程序打开使用的文件? 答:mknod命令结合设备的主设备号和次设备号,可创建一个设备文件. 评:这只是其中一种方式,也 ...

  4. Linux I2C核心、总线和设备驱动

    目录 更新记录 一.Linux I2C 体系结构 1.1 Linux I2C 体系结构的组成部分 1.2 内核源码文件 1.3 重要的数据结构 二.Linux I2C 核心 2.1 流程 2.2 主要 ...

  5. 韦东山yy公开课笔记(2)--各种杂的问题

    1. 编译器的版本和glibc库有对应关系吗,如何查看glibc的版本(glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc),编译器是不是只带glibc被编译生成的 . ...

  6. STC8H开发(五): SPI驱动nRF24L01无线模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  7. NRF24L01无线通讯模块驱动

    NRF24L01 无线模块,采用的芯片是 NRF24L01,该芯片的主要特点如下: )2.4G 全球开放的 ISM 频段,免许可证使用. )最高工作速率 2Mbps,高校的 GFSK 调制,抗干扰能力 ...

  8. C6748的GPIO口配置使用

    2018年1月17日更新: 这几天用了创龙的C6748的库,对于GPIO配置十分不爽,我移植了RK6748的库,用起来十分酸爽,把下面的文件加入到工程中,然后include头文件后就可以使用.非常好使 ...

  9. [stm32] NRF24L01+USART搞定有线和无线通信

    前言 一般进行远程监控时,2.4G无线通信是充当远程数据传输的一种方法.这时就需要在现场部分具备无线数据发送装置,而在上位机部分由于一般只有串口,所以将采集到的数据送到电脑里又要在上位机端设计一个数据 ...

随机推荐

  1. java实现12306的45分钟内支付,45分钟后取消订单功能?

    java实现12306的45分钟内支付,45分钟后取消订单功能? - 回答作者: 匿名用户 https://zhihu.com/question/27254071/answer/35948645

  2. Picklist的配置

    Picklist包括静态的Picklist和动态的Picklist.静态Picklist的配置 1.首先在All Projects中,选中Picklist,复制一个Pistlist进行修改.Name( ...

  3. oracle模糊搜索避免使用like,替换为instr()

    oracle中instr()函数用法 instr(name,'张三')>0  相当于  name like '%张三%' instr(name,'张三')=1  相当于  name like ' ...

  4. 初识EMC

    EMC,即电磁兼容,是指设备在预期的电磁环境中,能按设计要求正常抵抗电磁干扰的能力.其主要包含3个方面:电磁干扰(EMI),电磁抗扰(EMS)与静电放电抗扰(ESD). 电磁干扰的方式可以大概分为传导 ...

  5. PS软件怎么把视频转成gif动态图?

    PS软件怎么把视频转成gif动态图?Adobe PhotoShop软件的最新版本是可以编辑视频的,并且可以将视频转换为GIF动态图,使用也很简单,下面分享ps制作gif动态图的教程,需要的朋友可以参考 ...

  6. STM32-F429ZIT6-关于驱动安装

    第一步:下载驱动 1.个人百度云链接:http://pan.baidu.com/s/1dE8vxy5 密码:yow0 2.网站下载:这个还是直接百度吧. 第二步:驱动安装 注意:安装之前要先关闭安全监 ...

  7. 如何在ubuntu上安装virtualbox的driver module vboxdrv

    干净的ubuntu安装完毕之后是没有vboxdrv这个driver module的. 新建一个folder jerry_virtualbox: 使用wget下载virtualbox安装包:https: ...

  8. Android(java)学习笔记26:File类的使用

    1. File类的使用  package cn.itcast_01; import java.io.File; /* * 我们要想实现IO的操作,就必须知道硬盘上文件的表现形式. * 而Java就提供 ...

  9. 初学DLX

    前言 \(DLX\),全称\(Dancing\ Links\ X\),即舞蹈链算法. 这是一个十分高效且实用的算法,它主要用于求出精确覆盖问题的一组解.(貌似重复覆盖问题也可以,但我不会\(2333\ ...

  10. javascript DOM 操作基础知识小结

    经常用到javascript对dom,喜欢这方便的朋友也很多,要想更好的对dom进行操作,这些基础一定要知道的.   DOM添加元素,使用节点属性  <!DOCTYPE html PUBLIC ...