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. Apache转发到Tomcat

    #vi /etc/httpd/conf/httpd.conf 添加下面配置 NameVirtualHost *:80 <VirtualHost *:80>ProxyPreserveHost ...

  2. linux搭建nginx图片服务器

    1:参考http://blog.csdn.net/u012401711/article/details/53525908

  3. VS中bin,app_code,app_data,app_browser,app_GlobalResources等文件夹的作用 .

    1.  Bin文件夹 Bin文件夹包含应用程序所需的,用于控件.组件或者需要引用的任何其他代码的可部署程序集.该目录中存在的任何.dll文件将自动地链接到应用程序.如果在该文件夹中留有不用的或过期的文 ...

  4. mysql导入大量数据时报MySQL server has gone away错误的解决办法

    https://blog.csdn.net/eric520zenobia/article/details/77619469

  5. 【面试虐菜】—— 常用SQL语句

    创建表 create table emp( id decimal, name ), age decimal) 删除表 DROP TABLE EMP 插入默认值 CREATE TABLE EMP( Id ...

  6. 一张图看懂微软Power BI系列组件

    一.Power BI简介 Power BI是微软最新的商业智能(BI)概念,它包含了一系列的组件和工具.话不多说,直接上图吧: Power BI的核心理念就是让我们用户不需要强大的技术背景,只需要掌握 ...

  7. MATLAB/Excel-如何将Excel数据导入MATLAB中

    在使用MATLAB对矩阵进行数据处理时,为了方便编辑与修改,常常需要先将数据录入到Excel中,然后再将其导入到MATLAB中参与矩阵运算.本文在MATLAB 2013a和Office 2013环境下 ...

  8. python入门14 字典dict

    字典dict是无序的key:value格式的数据序列 #coding:utf-8 #/usr/bin/python """ 2018-11-11 dinghanhua 字 ...

  9. javascript字面量

    在JavaScript里面,字面量包括:字符串字面量(string literal ).数组字面量(array literal)和对象字面量(object literal),另外还有函数字面量(fun ...

  10. POJ 3694 无向图的桥

    Network Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 10404   Accepted: 3873 Descript ...