码迷,mamicode.com
首页 > 其他好文 > 详细

使用C6748和C5509A对nRF24L01驱动进行数据传输

时间:2018-01-14 12:04:03      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:方向   延时   put   div   read   比较   span   io7   没有   

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, 0 );                // 配置GPIO0号为输入方向
GPIO_pinDirection( GPIO_PIN1, 1 );                // 配置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,1 );        // gpio3口拉高
GPIO_pinWrite( GPIO_PIN4,0 );        // 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(13,0x80088808,0x80088808);            // 需要配合一个软件算出这个值。
    RK6748_pinmuxConfig(18,0x00800000,0x00800000);
    RK6748_pinmuxConfig(19,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驱动进行数据传输

标签:方向   延时   put   div   read   比较   span   io7   没有   

原文地址:https://www.cnblogs.com/sigma0/p/6736301.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!