(本部)DSP串口通信
dsp实验报告哈工大实验二异步串口通信实验

dsp实验报告哈工大实验二异步串口通信实验异步串口通信实验一. 实验目的1. 了解*****F2407A DSP 片内串行通信接口(SCI)的特点。
2. 学会设置SCI 接口进行通信。
3. 了解ICETEK-LF2407-A 板上对SCI 接口的驱动部分设计。
4. 学习设计异步通信程序。
二. 实验设备计算机,ICETEK-LF2407-EDU 实验箱(或ICETEK 仿真器+ICETEK-LF2407-A 系统板+相关连线及电源)。
三. 实验原理1. *****F2407A DSP 串行通信接口模块*****F240x 器件包括串行通信接口SCI 模块。
SCI 模块支持CPU 与其他使用标准格式的异步外设之间的数字通信。
SCI 接收器和发送器是双缓冲的,每一个都有它自己单独的使能和中断标志位。
两者都可以独立工作,或者在全双工的方式下同时工作。
2. ICETEK-LF2407-A 板异步串口设计由于DSP 内部包含了异步串行通信控制模块,所以在板上只需加上驱动电路部分即可。
驱动电路主要完成将SCI 输出的0-3.3V 电平转换成异步串口电平的工作。
转换电平的工作由MAX232 芯片完成,但由于它是5V 器件所以它同DSP 间的信号线必须有电平转换,此板采用的是74LS245。
3. 串行通信接口设置CPU 进行串行通信时可以采用两种方式,一种是轮询方式,即CPU 不断查询串口状态进行接收和发送,缺点是占用CPU 时间太多;另一种是中断方式,SCI 的接收和发送都可以产生中断信号,这样CPU 可以在完成其他一些工作的同时进行串行通信。
串行通信接口波特率计算,内部生成的串行时钟由系统时钟SYSCLK 频率和波特率选择寄存器决定。
串行通信接口使用16 位波特率选择寄存器,数据传输的速度可以被编程为***** 多种不同的方式。
不同通信模式下的串行通信接口异步波特率由下列方法决定:BRR=1―***** 时的串行通信接口异步波特率:SCI 异步波特率=SYSCLK/ [( BRR+1)*8]其中,BRR=SYSCLK/(SCI 异步波特率*8)-1;BRR=0 时的串行通信接口异步波特率:SCI 异步波特率=SYSCLK/16这里BRR 等于波特率选择寄存器的16 位值。
基于LabWindows-CVIPC机与DSP间串口通讯设计

基于LabWindows/CVI的PC机与DSP间串口通讯设计摘要:本文以tms320f2808为例,简要的介绍了dsp c2000串口通讯接口的设计,并基于labwindows/cvi编程实现pc机与tms320f2808的串口通讯。
关键词:labwindows/cvi;tms320f2808;串口通讯中图分类号:tp393.09labwindows/cvi是一个完全的ansi c开发环境,用于仪器控制、自动检测、数据处理的应用软件。
使用灵活的c语言开发平台与数据采集、分析和显示有机的结合起来,为熟悉c语言的开发人员建立自动化检测系统、数据采集系统和过程化控制等提供了一个理想的软件开发环境。
采用ti公司生产的tms320f2808作为处理芯片,它是一款专为控制应用系统而设计的32位定点运算dsp。
它具有强大的外设功能,无需额外增加其它芯片便可轻松实现ad采集、多功能gpio口、sci、spi、can、iic以及其它通信接口。
利用labwindows/cvi灵活的c语言以及dsp强大的处理能力,可以灵活的实现pc机与dsp之间串行数据的交互功能。
1 pc机与dsp间的串口通讯设计1.1 dsp串口设计dsp与pc机进行数据交换,两者之间必须采用一个电平转换芯片,本文选用max公司生产的max3232进行电平转换。
pc机与dsp串口通讯框图如图1所示,电平转换电路如图2所示。
tms320f2808的内部具有两个相同的sci模块,scia和scib。
每个sci模块都有独立的接收器和发送器,他们有各自独立的使能位和中断位,可以进行半双工和全双工的工作模式。
每个sci模块同时拥有独立的两个收发引脚scirxd和scitxd,在不使用sci模式时,这两个引脚可以作为通用i/o口使用。
tms320f2808可编程实现64000种不同的波特率,还可通过硬件逻辑来实现自动波特率的功能。
1.2 通讯协议设计dsp与pc机之间采用固定的9.6k波特率,无奇偶校验,8位数据位,1位停止位。
DSP的串行通信——TMS 320F240与PC机串行通信的设计

行 半 双 工 通 信 的 接 口电 路如 图所 示 :
T 3 0 2 0系列 是 美 国 1 公 司 于 1 9 MS 2 F 4 1 9 7年 推 出 的 . 为 数 专 字 电机 控 制 和 其 他 控 制 应 用 系 统 而 设 计 的 1 6位 定 点 数 字 信 号
维普资讯
20 0 8年第 1 期
福
建 电
脑
17 5
D P的 串行通 信 S
T 2 F 4 MS3 0 2 0与 P C机 串行通信 的设计
李吉琴
(福 建 省 莆 田 学 院 电信 系 福 建 莆 田 3 10 ) 5 10
【 摘 要 】 本 文 采 用 P 机 做 主 机 、 S : C D P做 从 机 的 方 式 , 过 P 通 C机 和 T 3 0 2 0之 间 串行 通 信 的 实 验 , 绍 了一 种 处 MS 2 F 4 介 理P C机 和 D P进 行 串行 通 信 的 方 法. 而 实现 D P与 P S 从 S C机 之 间有 效 可靠 的 通 讯 。
【 关键词】 C机 , 字信号 处理器( S ) 串行通信接 口(C ) :P 数 DP , SI
Байду номын сангаас引 言
D P的一 个 突 出 特 点 是 实 时 性 .在 实 时 信 号 处 理 中 已经 离 S 不 开 D P 这 些 处 理 系 统 中包 含 了 各 种 数 据 通 信 , 如 D P与 S. 例 S D P问 数 据通 信 . S S D P与 P C机 问 数 据 通 信 等 。 何 能 够 快 速 、 如 准 确 的完 成 通 信 是 每个 硬件 工程 师 所 关 心 的 问题 。 由于 D P的 工 S 作频 率 较 高 。 其 数 据 读 写 周 期 很 短 。 而 P 故 然 C机 串 E读 写 速 度 l 较低 . 大 数 据 吞 吐 量 约 为 15 b s尽 管 D P从 这些 冗 长 的 等 最 1k p , S 待周 期 中 解 放 出来 .将 其 时 间重 点 放 在 处 理 关 键 的实 时 任 务 中 去. 有着 重 要 的实 际 意 义 。 D P与 P 故 S C机 之 间 串 E通 信 的速 度 l 匹配 是 保 证 快 速 、 确 通 信 的 关 键 。 准
DSP与PC间高速串口通信的实现

0八一科 技
D 与P f高速 串口通 信 的实现 SP Cf J
2 7
DP C S 与P 问高速串 口通信的实现
冷 艾 亭
( 零八 一总厂 电信 室 摘 广元 68 1 2 0 7)
要 :本 文主 要介 绍 利 用通 用异 步收发 器 ( _T)1 6 0-片 实现P UA . R 65 ,  ̄ C机
L
L H H H H L L H H
K
H L L L H L H L H
T R H
IR E IR S FR C ER F LR C MC R LR S MS R SR P
发送保 持 寄存器
除数锁 存器高位
关 于各寄存 器 内容的具 体规定 ,这里不作 详述 ,但 在串行通 讯应用 中,要 重点 搞清楚 F R、 R、 E C I L R等几个 寄存 器的 内容 。 C (IO控制 寄存 器)用 于使 能 FF 复位 F F 设 C F R FF : IO, IO, 置 发送/ 收 FF 接 IO的触发数 , M D A模式 选择 。L R 线控 制 寄存器)用 于设 置 一个 字 节 的字 C( : 长 , 止位 , 验位 。 RMo e 停 校 MC ( dm控 制寄存 器)用 于波特率 设置 。E ( : I R 中断允许寄存 器)用 于 : 中断设 置 。此外 , 在实 际应用 中 , 时可能会 忽视 MOD M控 制寄存 器 中的 D 有 E 4位 , 该位 为 自
上起 始位 、停 止位 和校 验 位 。它具 有两 种 工作模 式 :S D标 准模 式 和 P T C模式 ,当 16 0 65
与 D P相连 时 。一般 采用 S D ( 准 )模式 。16 0片 内有 丰富 的内部 寄存器 ,通 过对 其 S T 标 65 内 部寄 存 器 的设置 。可 灵 活 的控 制 16 0的工 作状 态 。其 标准 功 能有 : 自动硬 软件 流控 65
DSP28335串口通信实验

// main函数#include"DSP2833x_Device.h"// DSP2833x Headerfile Include File #include"DSP2833x_Examples.h"// DSP2833x Examples Include File #include"sci.h"#define NUM 10// Prototype statements for functions found within this file.void SCI_Operation();void SCIA_Operation(void);void SCIB_Operation(void);void SCIC_Operation(void);void sci_config_init(void);void scia_config_init(void);void scib_config_init(void);void scic_config_init(void);void SCI_FIFO_Init(void);void SCIA_FIFO_Init(void);void SCIB_FIFO_Init(void);void SCIC_FIFO_Init(void);void SCIA_Character_Send_Msg(char character);void SCIB_Character_Send_Msg(char character);void SCIC_Character_Send_Msg(char character);void SCI_Send_Msg(char *message);void SCI_Send_Msg_Count(char count,char *message);char SCI_Receive_Buff();char SCIA_Receive_Buff(void);char SCIB_Receive_Buff(void);char SCIC_Receive_Buff(void);char *msg="\r\nHello Yan Xu!\0";char *message1={ "\r\nlearner the scic!\0"};char ReceivedChar;char LoopCount =0;void main(void){InitSysCtrl();Init_SCI_Gpio();InitXintf16Gpio();DINT;InitPieCtrl();IER = 0x0000;IFR = 0x0000;InitPieVectTable();SCI_FIFO_Init(); // Initialize the SCI FIFOsci_config_init(); // Initalize SCI for echobackSCI_Send_Msg(msg);SCI_Send_Msg_Count(NUM,message1);msg = "\r\nYou will enter a character, and the DSP will echo it back! \n\0"; SCI_Send_Msg(msg);while(LoopCount++<10){SCI_Operation();}}void SCI_Operation(){#if (DSP2833x_SCI_A)SCIA_Operation();#endif#if (DSP2833x_SCI_B)SCIB_Operation();#endif#if (DSP2833x_SCI_C)SCIC_Operation();#endif}void SCIA_Operation(void){msg = "\r\nEnter a character: \0";SCI_Send_Msg(msg);ReceivedChar = SCIA_Receive_Buff();// Echo character backmsg = " You sent: \0";SCI_Send_Msg(msg);SCIA_Character_Send_Msg(ReceivedChar);}void SCIB_Operation(void){msg = "\r\nEnter a character: \0";SCI_Send_Msg(msg);ReceivedChar = SCIB_Receive_Buff();// Echo character backmsg = " You sent: \0";SCI_Send_Msg(msg);SCIB_Character_Send_Msg(ReceivedChar);}void SCIC_Operation(void){msg = "\r\nEnter a character: \0";SCI_Send_Msg(msg);ReceivedChar = SCIC_Receive_Buff();// Echo character backmsg = " You sent: \0";SCI_Send_Msg(msg);SCIC_Character_Send_Msg(ReceivedChar);}void sci_config_init(void){#if (DSP2833x_SCI_A)// Test 1,SCIA DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity scia_config_init();#endif#if (DSP2833x_SCI_B)// Test 1,SCIA DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity scib_config_init();#endif#if (DSP2833x_SCI_C)// Test 1,SCIA DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity scic_config_init();#endif}// Test 1,SCIA DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity void scia_config_init(){// Note: Clocks were turned on to the SCIA peripheral// in the InitSysCtrl() functionSciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback// No parity,8 char bits,// async mode, idle-line protocol SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,// Disable RX ERR, SLEEP, TXWAKE SciaRegs.SCICTL2.all =0x0003;SciaRegs.SCICTL2.bit.TXINTENA = 1;SciaRegs.SCICTL2.bit.RXBKINTENA =1;#if (CPU_FRQ_150MHZ)SciaRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 37.5MHz.SciaRegs.SCILBAUD =0x00E7;#endif#if (CPU_FRQ_100MHZ)SciaRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 20MHz.SciaRegs.SCILBAUD =0x0044;#endifSciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset}// Test 1,SCIA DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parityvoid scib_config_init(){// Note: Clocks were turned on to the SCIA peripheral// in the InitSysCtrl() functionScibRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback// No parity,8 char bits,// async mode, idle-line protocol ScibRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,// Disable RX ERR, SLEEP, TXWAKE ScibRegs.SCICTL2.all =0x0003;ScibRegs.SCICTL2.bit.TXINTENA = 1;ScibRegs.SCICTL2.bit.RXBKINTENA =1;#if (CPU_FRQ_150MHZ)ScibRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 37.5MHz.ScibRegs.SCILBAUD =0x00E7;#endif#if (CPU_FRQ_100MHZ)ScibRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 20MHz.ScibRegs.SCILBAUD =0x0044;#endifScibRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset}// Test 1,SCIA DLB, 8-bit word, baud rate 0x000F, default, 1 STOP bit, no parity void scic_config_init(){// Note: Clocks were turned on to the SCIA peripheral// in the InitSysCtrl() functionScicRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback// No parity,8 char bits,// async mode, idle-line protocol ScicRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,// Disable RX ERR, SLEEP, TXWAKE ScicRegs.SCICTL2.all =0x0003;ScicRegs.SCICTL2.bit.TXINTENA = 1;ScicRegs.SCICTL2.bit.RXBKINTENA =1;#if (CPU_FRQ_150MHZ)ScicRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 37.5MHz.ScicRegs.SCILBAUD =0x00E7;#endif#if (CPU_FRQ_100MHZ)ScicRegs.SCIHBAUD =0x0001; // 9600 baud @LSPCLK = 20MHz.ScicRegs.SCILBAUD =0x0044;#endifScicRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset}// Transmit a character from the SCIvoid SCIA_Character_Send_Msg(char character){while(SciaRegs.SCICTL2.bit.TXRDY==0){}SciaRegs.SCITXBUF=character;}void SCIB_Character_Send_Msg(char character) {while(ScibRegs.SCICTL2.bit.TXRDY==0){}ScibRegs.SCITXBUF=character;}void SCIC_Character_Send_Msg(char character) {while(ScicRegs.SCICTL2.bit.TXRDY==0){}ScicRegs.SCITXBUF=character;}void SCI_FIFO_Init(){#if (DSP2833x_SCI_A)SCIA_FIFO_Init();#endif#if (DSP2833x_SCI_B)SCIB_FIFO_Init();#endif#if (DSP2833x_SCI_C)SCIC_FIFO_Init();#endif}// Initalize the SCI FIFOvoid SCIA_FIFO_Init(){SciaRegs.SCIFFTX.all=0x8000;}// Initalize the SCI FIFOvoid SCIB_FIFO_Init(){ScibRegs.SCIFFTX.all=0x8000;}// Initalize the SCI FIFOvoid SCIC_FIFO_Init(){ScicRegs.SCIFFTX.all=0x8000;// ScicRegs.SCIFFRX.all=0x204f;// ScicRegs.SCIFFCT.all=0x0;}char SCI_Receive_Buff(){#if (DSP2833x_SCI_A)return( SCIA_Receive_Buff());#endif#if (DSP2833x_SCI_B)return (SCIB_Receive_Buff());#endif#if (DSP2833x_SCI_C)return (SCIC_Receive_Buff());#endif}char SCIA_Receive_Buff(){ // Wait for inc characterwhile(SciaRegs.SCIRXST.bit.RXRDY!=1) { } // wait for XRDY =1 for empty state // Get characterreturn SciaRegs.SCIRXBUF.all;}char SCIB_Receive_Buff(){ // Wait for inc characterwhile(ScibRegs.SCIRXST.bit.RXRDY!=1) { } // wait for XRDY =1 for empty state // Get characterreturn ScibRegs.SCIRXBUF.all;}char SCIC_Receive_Buff(){ // Wait for inc characterwhile(ScicRegs.SCIRXST.bit.RXRDY!=1) { } // wait for XRDY =1 for empty state // Get characterreturn ScicRegs.SCIRXBUF.all;}void SCI_Send_Msg(char *message){int i=0;while(message[i++]!='\0'){#if(DSP2833x_SCI_A)SCIA_Character_Send_Msg(message[i]);#endif#if(DSP2833x_SCI_B)SCIB_Character_Send_Msg(message[i]);#endif#if(DSP2833x_SCI_C)SCIC_Character_Send_Msg(message[i]);#endif}}void SCI_Send_Msg_Count(char count,char *message){while(count--){SCI_Send_Msg(message);}}//=========================================================================== // No more.//=========================================================================== //=========================================================================== // sci.c文件//===========================================================================#include"DSP2833x_Device.h"// DSP2833x Headerfile Include File#include"DSP2833x_Examples.h"// DSP2833x Examples Include File#include"sci.h"void Init_SCI_Gpio(){#if DSP2833x_SCI_AInitSCIAGpio();#endif#if DSP2833x_SCI_BInitSCIBGpio();#endif#if DSP2833x_SCI_CInitSCICGpio();#endif}void InitSCIAGpio(void){EALLOW;//ENBALE PULL-UP FUNCTIONGpioCtrlRegs.GPBPUD.bit.GPIO36= 0; // Enable pull-up for GPIO28 (SCIRXDA) GpioCtrlRegs.GPBPUD.bit.GPIO35 = 0; // Enable pull-up for GPIO29 (SCITXDA)GpioCtrlRegs.GPBQSEL1.bit.GPIO35 = 3; // Asynch input GPIO28 (SCIRXDA) GpioCtrlRegs.GPBQSEL1.bit.GPIO36 = 3;GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 1; // Configure GPIO28 for SCIRXDA operationGpioCtrlRegs.GPBMUX1.bit.GPIO35 = 1; // Configure GPIO29 for SCITXDA operation#if 0GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0; // Enable pull-up for GPIO28 (SCIRXDA) GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0; // Enable pull-up for GPIO29 (SCITXDA)GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1; // Configure GPIO28 for SCIRXDA operationGpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1; // Configure GPIO29 for SCITXDA operation#endifEDIS;}void InitSCIBGpio(){EALLOW;/* Enable internal pull-up for the selected pins */// Pull-ups can be enabled or disabled disabled by the user.// This will enable the pullups for the specified pins.// Comment out other unwanted lines.// GpioCtrlRegs.GPAPUD.bit.GPIO9 = 0; // Enable pull-up for GPIO9 (SCITXDB) GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0; // Enable pull-up for GPIO14 (SCITXDB) //GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; // Enable pull-up for GPIO18 (SCITXDB)// GpioCtrlRegs.GPAPUD.bit.GPIO22 = 0; // Enable pull-up for GPIO22 (SCITXDB) // GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0; // Enable pull-up for GPIO11 (SCIRXDB) GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0; // Enable pull-up for GPIO15 (SCIRXDB) // GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // Enable pull-up for GPIO19 (SCIRXDB)// GpioCtrlRegs.GPAPUD.bit.GPIO23 = 0; // Enable pull-up for GPIO23 (SCIRXDB) /* Set qualification for selected pins to asynch only */// This will select asynch (no qualification) for the selected pins.// Comment out other unwanted lines.// GpioCtrlRegs.GPAQSEL1.bit.GPIO11 = 3; // Asynch input GPIO11 (SCIRXDB)GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 3; // Asynch input GPIO15 (SCIRXDB)//GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3; // Asynch input GPIO19 (SCIRXDB)// GpioCtrlRegs.GPAQSEL2.bit.GPIO23 = 3; // Asynch input GPIO23 (SCIRXDB)/* Configure SCI-B pins using GPIO regs*/// This specifies which of the possible GPIO pins will be SCI functional pins. // Comment out other unwanted lines.// GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 2; // Configure GPIO9 for SCITXDB operationGpioCtrlRegs.GPAMUX1.bit.GPIO14= 2; // Configure GPIO14 for SCITXDB operation //GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 2; // Configure GPIO18 for SCITXDB operation// GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 3; // Configure GPIO22 for SCITXDB operation// GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 2; // Configure GPIO11 for SCIRXDB operationGpioCtrlRegs.GPAMUX1.bit.GPIO15= 2; // Configure GPIO15 for SCIRXDB operation // GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 2; // Configure GPIO19 for SCIRXDB operation// GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 3; // Configure GPIO23 for SCIRXDB operationEDIS;}void InitSCICGpio(){EALLOW;/* Enable internal pull-up for the selected pins */// Pull-ups can be enabled or disabled disabled by the user.// This will enable the pullups for the specified pins.GpioCtrlRegs.GPBPUD.bit.GPIO62= 0; // Enable pull-up for GPIO62 (SCIRXDC) GpioCtrlRegs.GPBPUD.bit.GPIO63 = 0; // Enable pull-up for GPIO63 (SCITXDC)/* Set qualification for selected pins to asynch only */// Inputs are synchronized to SYSCLKOUT by default.// This will select asynch (no qualification) for the selected pins.GpioCtrlRegs.GPBQSEL2.bit.GPIO62 = 3; // Asynch input GPIO62 (SCIRXDC)/* Configure SCI-C pins using GPIO regs*/// This specifies which of the possible GPIO pins will be SCI functional pins.GpioCtrlRegs.GPBMUX2.bit.GPIO62 = 1; // Configure GPIO62 for SCIRXDC operationGpioCtrlRegs.GPBMUX2.bit.GPIO63 = 1; // Configure GPIO63 for SCITXDC operationEDIS;}//=========================================================================== // sci头文件//=========================================================================== #ifndef SCI_H_#define SCI_H_#define DSP2833x_SCI_A 0#define DSP2833x_SCI_B 0#define DSP2833x_SCI_C 1void Init_SCI_Gpio();void InitSCIAGpio(void);void InitSCIBGpio(void);void InitSCICGpio(void);#endif。
基于DSP实验系统的串口通信

课程设计报告( 2014 -- 2015年度第二学期)课程名称:DSP课程设计题目:基于DSP实验系统的串口通信院系:电子与通信工程系班级:电子学号:学生姓名:指导教师:设计周数: 2成绩:日期:2015 年7月16日一、课程设计的目的与要求1.设计方案:通过TMS320C5509A的串口与电脑进行通信,利用串口调试助手发送数据,由DSP接收到,DSP读到收到数据进行下一步的让四位LED灯亮,实现数据的通信,并在lcd12864上显示发送的数据,还有显示拨码开关的数值。
2.设计指标:电脑只能发送0~15,因为读出数据的时候比较方便解码,比如发送4就可以直接给LED直接赋值,让第三个灯亮,也就是一般的二进制转换。
二、设计正文1.设计思路(系统组成介绍)串口模块:TL16C550 是一个标准的串口接口芯片,它的控制寄存器基地址为0x400200,寄存器占用TMS320VC5509 的8 个地址单元。
串口中断与TMS320VC5509 的INT0 连接。
用户可以使用TMS320VC5509 的中断0 响应串口中断。
TL16C550 有11 个寄存器,这11 个寄存器是通过TMS320VC5509 的3 个地址线(A3~A1)和线路控制寄存器中的DLAB 位对它们进行寻址的。
板上加上16C550、Max232 和驱动电路。
驱动电路主要完成将输出的0-3.3V 电平转换成异步串口的工作电平,转换电平的工作由MAX232 芯片完成,但由于它是5V 器件,所以它同DSP 间的信号线必须有电平转换,此板采用的是74LVC245。
实验箱上的液晶模块采用的型号是TJDM12864MTJDM12864M 是一款带中文字库的图形点阵模块,由动态驱动方式驱动128×64 点阵显示。
低功耗,供应电电压范围宽。
内含多功能的指令集,操作简易。
采用COB 工艺制作,结构稳固,使用寿命长。
特性:1.提供 8 位,4 位及串行接口可选2.64×16 位字符显示 RAM(DDRAM 最多 16 字符×4 行,LCD 显示范围 16×2 行)3.2M 位中文字型 ROM(CGROM),总共提供 8192 个中文字型(16×16 点阵)4.16K 位半宽字型 ROM(HCGROM),总共提供 126 个西文字型(16×8 点阵)5.64×16 位字符产生 RAM(CGRAM)6.15×16 位总共 240 点的 ICON RAM(ICONRAM)7.自动复位(RESET)功能8.绘图及文字画面混合显示功能9.提供多功能指令:——画面清除(display clear)——游标归位(return home)——显示开/关(display on/off)——游标显示/隐藏(cursor on/off)——字符闪烁(display character blink)——游标移位(cursor shift)——显示移位(display shift)——垂直画面旋转(vertical line scoll)——反白显示(By-line reverse display)——睡眠模式(sleep mode)DSP与LCD的连接:3.软件设计流程:4.在试验箱上模拟实现用随实验箱附带的串口线(两端均为9 孔“D”形插头)连接计算机com1 或com2 插座和ICETEK–VC5509-A 板上标准RS-232 插座,编译、下载、运行。
DSP原理及应用技术第7.3节 串行通信接口(SCI)

TXINT TXINT
7.3 串行通信接口(SCI)
2)SCI自动波特率
SCI模块的增强功能支持硬件上的自动波特率检测逻辑。自动波特率 检测的流程如下:
①使能自动波特率检测模式:设置CDC位(SCIFFCT.13)为1并通过 向ABDCLR位(SCIFFCT.14)写1清除ABD位(SCIFFCT.12)。
7.3 串行通信接口(SCI)
(3)SCI多处理器通信
多处理器通信格式允许一个处理器在同一串行线路中将数据块有 效地传给其它处理器。在一条串行线上每次只有一个处理器发送数据 地址字节: 休眠位: 识别地址字节:
两种多处理器模式的接收顺序如下: 1)在接收一个地址块时,SCI端口被唤醒并请求中断(SCICTL2 寄存器的RX/BK INT ENA位必须使能以发送中断请求)。读取包含目 的地址的第一帧数据。 2)通过中断进入一个软件服务程序,检测即将到来的地址,将 接收到的地址字节与存储在内存中的器件地址进行比对。 3)如果检测结果表明数据块的地址与该设备CPU地址一致,则 CPU清零SLEEP位,并读取数据块的其余部分;如果不是则退出子程序 ,SLEEP仍然保持置位,并且在下一个数据块开始之前不会产生接收 中断。
SCI模块与CPU的连接如图7-29所示。
7.3 串行通信接口(SCI)
1. SCI模块具有以下特征:
➢ 两个外部引脚(不用于SCI通信时,可作为通用I/O口): SCITXD:SCI发送-输出引脚; SCIRXD:SCI接收-输入引脚; ➢ 可编程为多达64K种不同的波特率; ➢ 可编程的数据字格式; ➢ 四个错误检测标志:奇偶校验、溢出、帧错误和间断检测; ➢ 两种多处理器唤醒模式:空闲线和地址位; ➢ 半双工或者全双工操作; ➢ 双缓冲接收或发送功能; ➢ 发送器和接收器操作的完成可以通过中断驱动或者软件查询状态标志来
基于DSP串行外设接口的通信

文章编号:1006-1576(2003)05-0039-02基于DSP串行外设接口的通信徐朝阳,朱春光,孙海洋(国防科技大学机电工程与自动化学院,湖南长沙410073)摘要:基于DSP串行外设接口(SPI)的通信,以TMS320LF2407为主机,DAC7614为从机。
主从机数据均在SPICLK的一个边沿移出移位寄存器,在另一个边沿锁存到移位寄存器。
由系统软件决定主机对从机的检测,通过I/O口设置控制数据的发送。
以一路模拟电压输出设计为例,其DSP采用无延时下降沿时钟方式发送数据以配合DAC7614上升沿接收数据的时序,通过查询方式来控制数据的发送。
关键词:DSP控制器;串行外设接口;通信中图分类号:TP393.03 文献标识码:ACommunication of Serial Peripheral Interface Based on DSPXU Zhao-yang, ZHU Chun-guang, SUN Hai-yang(College of Electromechanical Engineering & Automation, National University of Defence Technology,Changsha 410073, China)Abstract: In the communication of serial peripheral interface (SPI) based on DSP, TMS320LF2407 is used as the host controller and DAC7614 used as the obedient controller. The data is sent out from the shift register on one edge of the SPICLK and received on another. How the host controller check up the obedient controller is decided with system software, and TXD controlled by setting I/O. Taking design of simulation voltage output as example, the data is sent out with the timing mode for the descend edge without delay to suit to suit the timing sequence for receiving data on ascend edge of DAC7614, sending and receiving data is controlled with inquiring mode in DSP.Key words: DSP Controller; Serial peripheral interface (SPI); Communication1 引言DSP的串行外设接口(SPI)是一个高速、同步串行输入/输出端口,允许长度可编程的串行位流(1~16位)以可编程的位传输速率从设备移入或移出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
注:1、此任务书应由指导教师填写。
2、此任务书必须在课程设计开始前下达给学生。
学生送交成果日期
学生签名
通过本次课程设计,综合运用数字信号处理、DSP技术课程以及其他有关先修课程的理论和生产实际知识去分析和解决具体问题,并使所学知识得到进一步巩固、深化和发展。初步培养学生对工程设计的独立工作能力、电子系统设计的一般方法。通过课程设计树立正确的设计思想,提高学生分析问题、解决问题的能力。进行设计基本技能的训练,如查阅设计资料和手册、程序的设计、调试等。
4、按要求编写课程设计报告书,正确、完整的阐述设计和实验结果。
5、在报告中绘制程序的流程图,并文字说明。
课题完成后应提交的文件和图表(或设计图纸):
1、课程设计的任务书
2、课程设计报告
(1)课程设计的总体方案
(2)设计的详细原理
(3)设计的步骤和过程
(4)设计程序的调试和运行结果
(5)课程设计的心得体会
长沙理工大学
课程设计(论文)任务书
课程:DSP课程设计
题目:DSP串口通信
电气与信息工程学院电子信息工程专业班
任务起止日期:201年月日至201年月日
学生姓名学号______________
指导教师
教研室主任年月日审查
院长(系主任)__年月日批准
课题内容及要求:
DSP课程设计是对《数字信号处理》、《DSP原理及应用》等课程的较全面练习和训练,是实践教学中的一个重要环节。
3、附录
DSP程序代码
主要参考文献:(由指导老师选定)
[1]顾卫钢.手把手教你学DSP-基于TMS320x281x北京航空航天大学出版社,2011.
[2]苏奎峰等.TMS320X281x DSP原理及C程序开发.北京航空航天大学出版社,2008.
[3]苏奎峰等.TMS320F2812原理与开发.电子工业出版社,2005.
[4]万山明. TMS320F2812/2810原理及应用实例.北京航空航天大学出版社,2007.
[5] TI公司著,胡广书等编译.TMS320C28X系列DSP的CP编译.TMS320C28X系列DSP指令和编程指南.清华大学出版社,2005.
本题目要求实现DSP与计算机的异步串行通信,设计目的在于了解DSP与PC机串行通信的实现软硬件方案,了解DSP的中断系统,掌握DSP的I/O工作方式。
1、设计DSP与PC的异步通讯接口电路,实现串行数据的发送与接收
2、通过编写DSP程序,实现DSP与PC机之间的数据交换。
3、要求详细叙述DSP与PC异步通讯接口设计方案以及控制的编程。