基于DSP的无线数据传输系统
何静,秀庆敬,张春霞,崔飞飞
天津电子科技大学信息与自动化系
中国,天津市
摘要-介绍一种基于TMS320DM642的无线数据传输系统。 nRF24L01被用作无线射频芯片。对接口电路和软件设计进行了说明,给出了一些重要的程序。系统可以完成数字信号的处理和无线传输,无需其他微控制器。它可以用来完成静态图像或语音信号的通信。
关键词-TMS320DM642,nRF24L01,无线通信
I 引言
由于无线数据通信不需要布线,因此可以快速布局,与有线数据通信相比,具有无与伦比的便利性。在一些特殊场合中,它是不可替代的[1]。目前,无线数据传输系统的控制核心往往是单片机,大部分单片机控制能力较强,计算能力较弱。随着音视频技术的发展,在许多情况下,需要寻址和传输的数据是语音信号,图像信号或视频信号。这些信号数据量大,处理算法复杂; MCU很难满足这些信号处理的要求。所以它需要专门的数字信号处理器作为系统的核心。
如果它可以应用数字信号处理器同时完成对无线数据模块的控制,那么就可以很容易地将数据处理和无线传输结合在一起。而在许多实际应用中,我们不需要处理运动图像,只需要处理和传输单帧图像。所以对数据传输速率要求不高,无线通信能够满足要求[2]。因此,本文以nRF24L01射频收发芯片和TMS320DM642数字信号处理器为核心,设计了一个简单实用的无线数据传输系统,并将其应用于农业病虫害检测系统,取得了良好的效果。
II 硬件电路设计
A.硬件原理框图
本文设计的无线数据传输系统的硬件框图如图1所示。射频芯片选用由Nordic公司推出的独立RF收发器芯片nRF24L01。它的工作原理是世界范围的2.4-2.5GHz ISM频段。芯片内置集成频率合成器,功率放大器,晶体振荡器,解调器,调制器,增强型ShockBurst模式控制器等功能模块[3]。
图1 无线数据传输系统的硬件框图
系统的核心是TI公司制造的数字信号处理器TMS320DM642(以下简称DM642),它是专门用于处理视频,图像,音频和语音信号的微处理器。它具有高速和并行处理等特点;它非常适合实时信号处理和识别,在实际生活中得到广泛应用。DM642的工作频率可以达到720MHz,有八个并行计算单元,处理能力为5760MIPS [4],此外,它还具有丰富的片上资源,内部集成了三个视频接口VP0-VP2,一个多路通道音频串行端口McASP0,可以轻松读取音频和视频信号。
在硬件框图中,我们将VP0作为视频信号的输入端口,与视频解码芯片连接,视频解码芯片连接到视频信号采集设备; McASP0与音频编解码器连接,音频编解码器负责从耳机或麦克风读取信号。收集到的信号将通过这两个端口进入DM642,根据需要对信号进行处理后送入nRF24L01,信息将由其发送。接收器发送信息后将其存入内存进行保存,并通过DM642(HPI I)的内部主机接口与主机进行通信。本文重点介绍DM642和nRF24L01接口电路的设计以及本部分的编程流程。
B.DM642和nRF24L01硬件接口
nRF24L01通过SPI接口与外部控制设备进行数据交换,DM642没有专用SPI接口,但其内部多通道缓冲串行端口(McBSP)可配置为供SPI端口使用。这些引脚实际连接到DM642的串行端口。具体的连接方法如图2所示。发送方和接收方的连接方式相同。
图2 连接方法
在该图中,DM642是SPI的主设备,nRF24L01是SPI的从设备。 nRF24L01的CE引脚与DM642的通用脚GPIO3相连,用于使从设备决定工作模式;由CSN,MOSI,MISO和SCK4线组成的SPI端口与DM642的McBSP1连接。该端口可以通过软件设置为SPI端口,当它用作SPI端口时,FSX1是从设备的使能信号; DX1是主设备的数据输出; DR1是主设备的数据输入; CLKX1是与SCK连接并充当SPI时钟信号。
在该图中,DM642是SPI的主设备,nRF24L01是SPI的从设备。 nRF24L01的CE引脚与DM642的通用脚GPIO3相连,用于使从设备决定工作模式;由CSN,MOSI,MISO和SCK4线组成的SPI端口与DM642的McBSP1连接。该端口可以通过软件设置为SPI端口,当它用作SPI端口时,FSX1是从设备的使能信号; DX1是主设备的数据输出; DR1是主设备的数据输入; CLKX1与SCK连接并充当SPI时钟信号。
III 软件设计系统
上电后,我们将在DM642上进行初始化,主要用于EMIF初始化和端口的一般设置。然后将McBSP配置为SPI的主设备。在此基础上,在nRF24L01上进行寄存器分配并将其初始化为发送模式或接收模式,然后开始数据通信。以下部分将解释软件程序的主要部分。
A.将McBSP配置为SPI的主器件
当McBSP作为SPI的主器件时,它将生成时钟信号CLKX和从器件的信号FSX,因此这两个引脚应为输出引脚,即PCR寄存器中的CLKXM和FSXM应设置为1。接收数据延迟位(RDATDLY)和发送数据延迟位(XDATDLY)必须为1位;其他值会导致传输错误。此外,还需要选择SPI时钟源并设置频率值,确定CLKSTP模式,设置传输数据格式,启动采样频率发生器,然后将SPCR寄存器中的XRST和RRST置1以启动发送器和接收器的工作[5 ]。具体程序如下。
void spi_init()
{SPCR1 = 0x00000000;
SPCR1 = 0x00001800; // CLKSTP = 11
PCR1 = 0x00000A08; // CLKXM = 1,FSXM = 1,
CLKXP = 1,FSXP = 1
SRGR1 = 0x2000001D; // CLKSM = 1,FSGM = 0,
CLKGDV = 0xff; //设置SPI的时钟频率
RCR1 = 0x00510050; // RDATDLY = 1
XCR1 = 0x00510050; // XDATDLY = 1
SPCR1 = 0x00401800; // GRST = 1
asm(“NOP”); //等待两个指令时钟
asm(“NOP”);
SPCR1 = 0x00411801; } //启动发送器和接收器的工作
B.单字的读和写nRF24L01的初始化
系统以32位单元传输读写单字的子程序如下。对于DM642,当每个DXR中的数字进入XSR时,FSX引脚将产生有效信号并驱动nRF24L01工作,因此无论是发送还是接收,DM642都需要在DXR上进行分配以启用FSX。在DM642接收到数据后,SPCR中的第一个RRDY被复位,接收到的数据被放入DRR,并且该子命令将其作为返回值。具体函数是:
uint SPI_RW(uint zi)
{DXR1 = zi;
while(!(SPCR1amp;0x2));
zi= DRR1;
return(zi);}
开始通信后发送给nRF24L01的第一个字节必须发送到命令字,它通过MOSI引脚串行移入nRF24L01,高位位于前一位置,低位位于后一位置。 同时,其内部寄存器值的内部状态从MISO引脚移动。 命令字由nRF24L01定义,包括读取寄存器,写入寄存器,读取数据和写入数据。 在命令字之后,芯片将在命令字下完成相应的任务。 nRF24L01数据传输的方式有两种模式:Shock-Burst和Enhanced ShockBurs。 后者比前一种型号具有更多的功能,即数据传输的握手信号,以确保数据传输的可靠性。 所以系统选择增强ShockBurst模式通讯。
当nRF24L01进行初始化时,命令字应写入寄存器命令,从第二个字节开始,我们需要写入寄存器值。在初始化过程中,我们需要设置地址,发射功率,工作频率等。以下是接收机nRF24L01初始化的具体步骤,nRF24L01共有6个接收通道,在这里接收来自通道1的数据。
void RecieveMode(void)
{SPI_W_Reg(WRITE_REG EN_AA,0x02); //开始ACK
SPI_W_Reg(WRITE_REG EN_RXADDR,0x02); //开始接收器的工作SPI_W_Reg(WRITE_REG SETUP_AW,0x01); //设置地址宽度3bytes
SPI_W_Reg(WRITE_REG SETUP_RETR,0x1a); //设置自动重传计数和自动重传延迟
SPI_W_Reg(WRITE_REG RF_CH,0); //设置频率通道nRF24L01运行
SPI_W_Reg(WRITE_REG RF_SETUP,0x07); //在TX模式下设置RF输出功率
SPI_W_Reg(WRITE_REG RX_PW_P1,3); //设置数据管道1中RX有效负载的字节数
SPI_W_3byte(WRITE_REG RX_ADDR_P1,0x58,0x2A,0x3C); //设置接收地址数据管道
SPI_W_Reg(WRITE_REG CONFIG,0x7f); } //作为接收器工作
SPI_W_Reg函数用于赋值给nRF24L01寄存器,并在其中调用SPI_RW()。参数WRITE_REG用于写入寄存器顺序的基本地址0x20,偏移量是每个寄存器地址的地址。函数的第二个参数需要写入寄存器的值中。
发送方nRF24L01的初始化与接收方相似,但我们需要注意两个问题:首先,在增强ShockBursttrade;模式下,发送方在发送数据后需要从接收方接收响应信号(ACK),然后它可以发送下一个数字。该芯片将发送者的通道设置为0来接收ACK,因此当它初始化时需要打开通道0以使接收者地址与发送者地址相同。其次,初始化的最后一句应修改为“SPI_W_Reg(WRITE_REG CONFIG,0x7e);”
C.数据传输
系统设置每次传输总共4个字节和32位二进制数字,其中第一个字节是写入数据命令0xA0,因此实际传输每次有三个字节。 程序会将需要传输的数据放入unsigned char sd [N]的数组中,数据传输过程如下:
for(i = 0; i lt;N; i = i 3)
{Senddata(sd[i],sd[i 1],sd第[i 2]); //发送3个字节
st = SPI_R_Reg(READ_REG STATUS); //读取状态寄存器
while(!(stamp;0x20))
{st = SPI_R_Reg(READ_REG STATUS);
if((stamp;0x10)== 0x10)
{SPI_W_Reg(WRITE_REG STATUS,0x10);
SendData(sd[i],sd [i 1],sd[i 2]); } }
在增强ShockBurst模式下,发送者收到响应信号后,会认为信号发送成功。状态寄存器TX_DS的第五位设置为1,然后循环回到开始并在下一组中发送设置数据,如果TX_DS为0,则等待并重新读取状态寄存器值。如果没有收到响应信号,则会自动重新发出。自动重新发送的最大次数在初始化时确定,如果达到该值并且没有收到应答,则该信号将在MAX_RT的第四位重置。该位置位后,不能继续下一步的操作。因此,如果发现MAX_RT为1,那么必须在该位写入1以清除该位并重新发送前一组中的数据。
接收器接收数据后,RX_DR状态寄存器的第六位被设置,并发送响应信号。在程序检测到RX_DR的高电平后,它将执行“读取数据”命令并从MISO线读取数据。
Ⅳ 需要注意的问题
- TMS320DM642和VP1数据引脚复用McBSP1的问题,在实际应用中引脚的功能由PERCFG决定,因此,在应用McBSP1时,应首先设置PERCFG并选择引脚功能。
- 在我们开始发送之后,根据时序,CE需要保持高电平至少10mu;s,然后将其拉低。 在实际操作中,这个过程是通过延迟程序来实现的。 具体的编译方法与CPU的时钟频率有关。
- 系统在DM642上编程时,选择CCS的编程环境,CCS集成了C编译器,编译器将非信号和非字符变量编译成8位二进制数。 无符号整数变量被编译为32位二进制数,当我们编译过程时我们应该注意这一点。
Ⅴ 结论
与传统无线通信系统相比,本文采用数字信号处理器代替单片机,实现对无线通信模块的控制。 通过这样做,它可以通过DSP对采集到的信号进行简单处理并发送出去。 它具有低功耗和低成本。 在图像防盗报警,交通道口控制,农业病虫害监测等领域的实时情况要求较低的情况下,nRF24L01的2Mbps传输速率完全可以满足要求。 在实践中,我们可以构建一对多和多对多的结构。 有广泛的应用空间。
ZigBee远程无线数据传输系统的
设计与实现
全文共9123字,剩余内容已隐藏,支付完成后下载完整资料
英语原文共 4 页,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[9115],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。
您可能感兴趣的文章
- 拟人手臂的轨迹规划与轨迹跟踪控制外文翻译资料
- 新型磁性辅助内窥镜系统在上消化道检查中应用的可行性 和安全性外文翻译资料
- 基于FPGA可编程逻辑器件的复合视频图像处理外文翻译资料
- 从被测的高频域原始信号中提取巴克豪森噪声外文翻译资料
- 重型机床z轴热误差混合建模方法外文翻译资料
- 一个红外浊度传感器:设计与应用外文翻译资料
- 用于控制食物烹饪过程的电子系统.外文翻译资料
- 关于液体介质中电磁流量计的设计和理论上存在的问题。第二部分:关于带电粒子产生的 噪声理论外文翻译资料
- 基于LabVIEW和Matlab的小波变换对非平稳信号的分析仿真外文翻译资料
- 应用于腹腔镜手术的新型膜式加热加湿器 的开发外文翻译资料