基于DSP2407异步串口的多机通信系统设计与实现

更新时间:2023-03-08 08:17:49 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于DSP2407异步串口的多机通信系统设计与实现

学院(系):机电工程 班级:自动化1101

姓名:钟金

学号:201140210

西南科技大学城市学院

摘要

本次设计的主要工作就是基于在TMS320LF2407A DSP芯片的SCI(异步串行通信)口上的串口通信的设计与实现。TMS320LF240x 器件包括串行通信接口 SCI 模块。SCI 模块支持 CPU 与其他使用标准格式的异步外设之间的数字通信。SCI 接收器和发送器是双缓冲的,每一个都有它自己单独的使能和中断标志位。两者都可以独立工作,或者在全双工的方式下同时工作。DSP内部包含了异步串行通信控制模块,所以在板上只需加上驱动电路部分即可。驱动电路主要完成将 SCI 输出的 0-3.3V 电平转换成异步串口电平的工作。转换电平的工作由MAX232芯片完成。

关键字:DSP ; TMS320LF2407A;

2

西南科技大学城市学院

目录:

一 实验目的及要求………………………………………4 二 实验设备………………………………………………4 三 实验原理………………………………………………4 四 TMS320LF2407DSP 及其异步串行口的特点…………6 六 实验步骤………………………………………………7 五 主函数程序流程………………………………………7 七 实验程序及结果………………………………………8 八 总结……………………………………………………14

3

西南科技大学城市学院

一 实验目的及要求

1、了解TMS320LF2407A DSP片内串行通信接口(SCI)的特点; 2、学会设置 SCI 接口进行通信; 3、学习设计异步通信程序。

设计要求:利用DSP2407的异步串口完成一个到多个(至少2个)的通信,要求设计通信的数据协议。要求具有数据接收反馈数据。处理器1往其他处理器发送数据时,必须指定发送地址。处理器2接收数据,必须先检查地址是和自己的地址相符,地址相符才能接收数据,接收到数据后给与发送端数据反馈,并把收到数据在PC机上显示。 串行通信接口模块有两个多处理器通信协议,空闲线多处理器模式和地址多处理器模式。这些通信协议保证多处理器间进行有效的数据传送。

串行通信接口模块提供了许多通用异步接收/发送(UART)通信外设的接口,如异步通信使用3条线连接,诸如采用RS-232格式的终端和打印机等众多标准器件。多处理器通信模式使得一个处理器能够有效地在同条串行连接线上将数据传送到其他的处理器。一条串行线上一次只能进行一次传送。

二 实验设备

DSP实验开发板、XDS510仿真器、计算机

三 实验原理

1、TMS320LF2407A DSP串行通信接口模块

TMS320LF240x 器件包括串行通信接口 SCI 模块。SCI 模块支持

4

西南科技大学城市学院

CPU 与其他使用标准格式的异步外设之间的数字通信。SCI 接收器和发送器是双缓冲的,每一个都有它自己单独的使能和中断标志位。两者都可以独立工作,或者在全双工的方式下同时工作。

2、实验板异步串口设计

由于DSP内部包含了异步串行通信控制模块,所以在板上只需加上驱动电路部分即可。驱动电路主要完成将 SCI 输出的 0-3.3V 电平转换成异步串口电平的工作。转换电平的工作由MAX232芯片完成。

3、串行通信接口设置

CPU 进行串行通信时可以采用两种方式,一种是轮询方式,即 CPU 不断查询串口状态进行接收和发送,缺点是占用 CPU 时间太多;另一种是中断方式,SCI 的接收和发送都可以产生中断信号,这样 CPU 可以在完成其他一些工作的同时进行串行通信。

串行通信接口波特率计算:

内部生成的串行时钟由系统时钟 SYSCLK 频率和波特率选择寄存器决定。串行通信接口使用16位波特率选择寄存器,数据传输的速度可以被编程为65000多种不同的方式。

不同通信模式下的串行通信接口异步波特率由下列方法决定: - BRR=1—65535 时的串行通信接口异步波特率: SCI 异步波特率=SYSCLK/ [( BRR+1)*8],其中 BRR=SYSCLK/(SCI异步波特率*8)-1; - BRR=0 时的串行通信接口异步波特率: SCI 异步波特率=SYSCLK/16

5

西南科技大学城市学院

这里 BRR 等于波特率选择寄存器的16位值。

四 TMS320LF2407DSP 及其异步串行口的特点

TMS320LF2407A 和TMS320LC2407A 是基于TMS320C2000TM 技术平台的定点 DSP 器件,是TMS320C24xA 系列中的新成员.2407A 使用了增强型TMS320 TM结构的C2xx 核心处理器,具有低成本、低功耗、高性能的优点.它还集成了多种专为数字电机和运动控制系统设计的外设,使之成为一款真正的单片数字信号处理控制器.在与以前C24x TM系列指令兼容的同时,2407A 具有更高的运算速度(40MIPS)和更高的外设集成度.2407A 包括两个事件管理模块,这两个模块已经针对电机控制和电源转换进行了优化,包括12路对称或非对称的PWM 发生器以及可编程的死区控制功能.双事件管理模块使得单个2407A DSP 控制器可以同时控制两台电机.2407A 具有16 个高性能的10 位A/D 转换器,最小转换时间为375 ns,其自动排序功能使多达16次转换可以在一个转换过程内完成而且不会给CPU 增加额外的开销.2407A 还提供16 位同步串行接口(SPI)和符合2.0B 标准的CAN 模块. TMS320LF2407A 提供了串行通讯接口SCI 模块,支持CPU 与其他使用标准格式的异步外设之间的数字通信.SCI 接收器和发送器是双缓冲的,每一个都有它自己单独的使能和中断标志位,两者都可独立工作,或者在全双工的方式下同时工作.SCI模块通过SCIRXD 引脚接收数据,通过SCITXD 引脚发送数据,在不使用SCI 模块的时候,这两个引脚

6

西南科技大学城市学院

可以被配置为通用I/O 口.为确保数据的完整,SCI 对接受到的数据进行间断检测、奇偶校验、超时和帧出错校验.通过一个16 位的波特率选择寄存器,数据传输的速度可以被编程为65535 种不同的方式,在40MHz 的CPU 时钟方式下,波特率范围从76bps 到1875kbps.无论接收还是发送,SCI 接口模块的数据都采用NRZ(非返回零)格式.NRZ数据格式包括一个起始位,(1~8)位可编程选择的数据位,可选择的奇/偶/无校验位,(1~2)个停止位.在地址位多处理器模式下还包括一个地址/数据位.

五 主函数程序流程

系统初始化 定时器初始化 串行通信接口初始化

接收服务程序 发送服务程序,定义一段需要发送的字符串 六 实验步骤

1、用DB9直通电缆把DSP的串口和PC机的串口连接起来。打开PC机串口调试软件,默认设置为COM1,9600,N,8,1,选择按16进制发送和接收;

2、将SCI目录COPY到CCS开发环境中的myproject目录下; 3、CCS中用projectOpen命令,加载SCI目录下的SCI.pjt; 4、浏览程序,打开工程目录下的main.c文件,并理解每条语句

7

西南科技大学城市学院

的含义;

5、编译工程。单击\菜单,\项,编译工程中的文件,生成*.out 文件;

6、下载程序。在CCS中用File Load Program命令,加载SCI目录中Debug目录下的*.out文件;

7、运行程序观察结果。调试程序过程中在合适位置设置断点,利用WATCH窗口观察DSP接收到的PC机数据;利用串口调试软件观察DSP发送到PC机的数据;

七 实验程序及结果

1、实验程序

#include \void SystemInit(); void Timer1Init(); void KickDog(); void SCI_Init(); void SCI_Send(); int numled0=200; unsigned int t0=0; unsigned int SCI_RXDATA; main() {

8

西南科技大学城市学院

SystemInit(); //系统初始化

MCRC=MCRC & 0xFF00; //IOPE0-7设为IO口模式 PEDATDIR=0xFF00; //所有LED=0, 所有led灯灭 SCI_Init();

Timer1Init(); /*定时器初始化*/ asm(\

while(1); /*进入死循环*/ }

void SystemInit() {

asm(\INTM \关闭总中断 */ asm(\禁止符号位扩展 */

asm(\块映射为 on-chip DARAM*/ asm(\累加器结果正常溢出*/ SCSR1=0x83FE; /* 系统时钟CLKOUT=20*2=40M */ /* 打开ADC,EVA,EVB,CAN和SCI的时钟*/

WDCR=0x006F; /* 禁止看门狗,看门狗时钟64分频 */

9

西南科技大学城市学院

KickDog(); IFR=0xFFFF; IMR=0x0003; }

void Timer1Init() {

EVAIMRA=0x0080; EVAIFRA=0xFFFF; GPTCONA=0x0000; // T1PR=2500; T1CNT=0;

T1CON=0x144E; //使能 }

void SCI_Init() {

MCRA=MCRA | 0x0003;

/* 初始化看门狗 */ /* 清除中断标志 */ /* 打开中断2 P44*/ // 定时器1周期中断使能

清除中断标志

// 定时器1初值,定时0.4us*2500=1ms 增模式, TPS系数40M/16=2.5M,T1//IOPA0, IOPA1为串口

10

西南科技大学城市学院

SCICCR=0x0007; //空闲多处理器模式,8位数据位,1位停止位,无奇偶校验位

SCICTL1=0x0003; //接收,发送,内部时钟使能,SLEEP=1 SCICTL2=0x0002; //接收中断使能 SCIPRI=0x0000; //高中断优先级

SCIHBAUD=0x0002; //40M,波特率设置为9600 SCILBAUD=0x0008;

SCICTL1=0x0023; //串口初始化完成 }

void SCI_Send() //发送0x80-0x87, 共8个字节数据 {

SCITXBUF=0x57;

while((SCICTL2 & 0x0080)==0); /*p301*/ }

void c_int1() {

11

西南科技大学城市学院

if(PIVR!=0x06) //高优先级的SCI接收中断 { asm(\ return; }

SCI_RXDATA=(SCIRXBUF) & 0x00FF ; //串口接收的数据保存 IFR=0xFFFF; asm(\ }

void c_int2() /*定时器1中断服务程序*/ {

if(PIVR!=0x27)

{ asm(\ return; } T1CNT=0; t0++; numled0--; if(numled0==0) {

12

西南科技大学城市学院

numled0=200;

if((PEDATDIR & 0x0002)==0x0002)

PEDATDIR=PEDATDIR & 0xFFFD; //IOPE1=0;LED灭 else

PEDATDIR=PEDATDIR |0x0002; //IOPE1=1;LED亮 }

if((t00)==0) //定时循环100msSCI发送 {

SCI_Send(); }

EVAIFRA=0x80;

asm(\INTM \ }

void KickDog() {

WDKEY=0x5555; WDKEY=0xAAAA; }

2、实验结果

13

西南科技大学城市学院

八 总结

TMS320LF2407A有极高的主频 ,在具有复杂的算法、要求实时控制的场合能充分显示出其优越性。通过DSP实验开发板、XDS510仿真器、计算机,验证了TMS320LF2407A DSP片内串行通信的优缺点。随着工业的发展 ,人们对工业控制的要求越来越高。DSP芯片处理数据的速度在不断的提高 ,能满足工业控制中实时处理数据的要求 ,而且其价格在不断的下降。因此 ,DSP的普及指日可待 ,其应用前景十分看好。

14

本文来源:https://www.bwwdw.com/article/1ox3.html

Top