DSP与单片机通信的多种方案设计

发布者:科技狂人最新更新时间:2007-02-05 来源: 单片机及嵌入式系统应用关键字:缓冲  寄存器  时钟 手机看文章 扫描二维码
随时随地手机看文章
  将DSP和单片机构成双CPU处理器平台,可以充分利用DSP对大容量数据和复杂算法的处理能力,以及单片机接口的控制能力。而DSP与单片机之间快速正确的通信是构建双CPU处理器的关键问题。下面就此问题分别设计串行SCI、SPI和并行HPI三种连接方式。

1 串行通信设计与实现

1 1 SCI串行通信设计

1.1.1 多通道缓冲串行口McBSP原理

  TMS320VC5402(简称VC5402)提供了2个支持高速、全双工、带缓冲、多种数据格式等优点的多通道缓冲串行口McBSP。MCESP分为数据通路和控制通路。①数据通路负责完成数据的收发。CPU或DMAC能够向数据发送寄存器DXR写入数据,DXR中的数据通过发送移位寄存器XSR输出到DX引脚。DR引脚接收数据到接收移位寄存器RSR,再复制到接收缓冲寄存器RBR,最后复制到数据接收寄存器DRR。这两种数据多级缓冲 方式使得数据搬移和片外数据通信能够同时进行。②控制通路负责内部时钟产生,帧同步信号产生,信号控制和多通道选择。另外.还具有向CPU发送中断信号和向DMAC发送同步事件的功能。MCBSP时钟和帧同步信号通过CLKR、CLKX、FXR、FSX引脚进行控制,接收器和发送器可以相互独立地选择外部时钟和帧同步信号,也可以选择由内部采样率发生器产生时钟和帧同步信号。帧同步脉冲有效表示传输的开始。

1.1.2 SCI串行接口设计

  设置VC5402的McRSP输出时钟和帧同步信号由内部采样率发生器产生,内部数据时钟CLKG和帧同步信号FSG驱动发送时钟CLKX和帧同步FSX(CLKXM=l,FSXM=l,FSGM=1),输入时钟也由内部采样率发生器产生,内部数据时钟CLKG驱动接收时钟CLKR(CLKRM=1),同时由CPU时钟驱动采样率发生器(CLKSM=1)。考虑到AT89C51(简称C51)串口发送数据帧中第l位为起始位,因此可以利用该位驱动输入帧同步信号FSR,同时要置忽略帧同步信号标志为1。其中FSG帧同步脉冲宽度=(FWID+1)·CLKG;FSG帧同步脉冲周期=(FPER+1)·CLKG;采样率发生器分频系数(采样率=波特率)=FIN/(CLKGDV+1)。

  SCI串口连接如图l所示。

1.1.3 波特率不一致的处理

VC5402初始化(以图1为例):

STM#SRGRl,SPSAl

STM#ooFEH,SPSDl;FSG帧同步脉冲宽度位为1个CLKG

;波特率为100 MHz/(0X(OFF)=392 156 b/s

STM#SRGR2,SPSAl

STM#3D00H,SPSDl;内部采样率发生器时钟由CPU驱动

  C51初始化:

MOV TMOD,#20H

MOVTLl,#FFH

MOVTHl,#FFH ;C51波特率=(2SMOD/32)*(fosc/12)[1/(256一初值)]一24 509 b/s

MOV SCON,#50H ;置串口方式l,每一帧10位数据.允许接收

MOV PCON,#80H ;设置SMOD=1

VC5402波特率/C51波特率=(392 156/24 509)=16.000 49

  VC5402每发送16位数据,C51只采样1位数据。在VC5402存储器中开辟一个空间对每次发送的8位数据进行扩展,1位扩为16位,0为0000H,l为FFFFH,共扩为128位。在数据头部填加16位起始位0000H,数据尾部填加停止位FFFFH。在VC5402发送控制寄存器XCR中设置XWDLEN=000(1字含8位),即可将要发送的8位数据封装成1帧10字的数据。这也符合C51串口1方式下1帧10位的数据格式。C51以1/16的VC5402采样速率接收数据,0000H采样为0,FFFFH采样为1,由此可以将接收到的200位恢复为8位数据,停止位进入RB8。

  C51每发送1位数据,VC5402要采样为16位数据。C51一次发送的10位数据的起始位触发VC5402的接收帧同步。由于VC5402以16倍C51的采样速率接收数据,1位采样为16位,0采样为0000H,1采样为FFFFH.只采样发送来的10位中的前9位,9位封装成144位,即接收的1帧数据完成。VC5402将收到的144位数据在开辟的存储器空间存放,抛弃前16位,在剩下的128位里分成8组,每组16位。比较其中间的8位,若有4位以上为1,则该16位为1,反之则为0。由此将接收到的144位恢复为8位数据。

  为了不让CPU频繁地被数据接收和发送打断,将DMA和MCBSP联合使用来控制数据的接收和发送。RRDY直接驱动MCBSP向DMAC接收数据事件(REVENT事件),XRDY直接驱动MCBSP向DMAC发送数据事件(XEVENT事件)。

  SCI通信协议如图2所示

1. 2 SPI串行通信设计

  将C51置为主机,VC5402为从机。McBSP的时钟停止模式(CLKSTP=1X)兼容SPI模式,接收部分和发送部分内部同步。McBSP可以作为SPI的从机或主机。发送时钟BCLKX作为SPI协议的移位时钟SCK使用,发送帧同步信号BFSX作为从机使能信号

nSS使用,接收时钟BCLKR和接收帧同步信号BFSR不使用。它们在内部分别与BCLKX和BFSX直接连接。BDX作为MISO,而BDR作为MOSI,发送和接收具有相同字长。

  C51中的并口P1.1和P1.2作为扩展串行SPI输人输出口与VC5402连接,P1.0作为串行时钟输出口,P1.3作为帧同步信号输出口_。

  SPI串口连接如图3所示。


VC5402初始化程序(以图3为例):

STM#SPCRll,SPSAl;设置时钟停止位进入MCBSP的SPI模式

STM#0X1000,SPSDl;时钟开始于上升沿(无延迟)

STM#SPCRl2,SPSAl

STM#0X0040,SPSDl;XINT由XRDY(即字尾)驱动

STM#PCRl,SPSAl

STM#0X000C,SPSDl;对发送和接收时钟,同步帧进行设置

STM#RCRll.SPSAl

STM#0X0000,SPSDl;接收数据l帧1字.1字8位

STM#XCRll,SPSAl

STM#0X0000,SPSDl;;发送数据1帧1字.1字8位;

  P1.0发送到VC5402的移位时钟是保证DSP正确采样接收和发送数据的时钟。它要保证和C51的采样接收和发送数据的时钟一致.才能使主从机同步。

2 并行通信设计与实现

2.1 VC5402的HPI接口原理

  HPI一8是一个8位(HD0~HD7)的连接DSP与主机设备或主处理器的并行接口。DSP与主机通过DSP的片内RAM交换数据,整个片内RAM都可以作为HPI一8的存储器。HPIA地址寄存器只能由主机直接访问,存放当前寻址的存储器的地址;HPID数据锁存器只能由主机直接访问,存放当前要写入或读出的数据;HPIC控制寄存器可以被主机和VC5402共同访问。HPI本身的硬件中断逻辑可以完成主从设备之间的握手,主机通过置HPIC中的特定位产生DSP中断,同样DSP通过nHINT引脚对主机产生中断。HRDY引脚用于自动调节主机访问HPI的速度,使慢速外部主机与DSP能很好地匹配。HRDY由HCS使能,即当HCS为高时HRDY一直为高,而当EMUl/nOFF为低时,HDRY输出高阻。

  HPI连接如图4所示。



  2.2 并行接口设计

  将C51置为主机,VC5402置为从机。C51的PO口和HPI的8位数据线HD0~HD7相连作为数据传输通道,P1.0~P1.3设置为输出控制HPI口的操作。其中P1.0作为读写控制选通信号连接HR/W;P1.1连接字节识别信号HBIL,控制读写数据是属于16位字的第1还是第2字节;P1.2和P1.3分别连接HCNTL0和HCNTLl,以实现对HPIC、HPIA和HPID寄存器的访问;nRD和nWR连接nHDSl和nHDS2作为数据选通信号来锁存有效的HCNTLO/1、HBIL和HR/W信号。nINTl作为输入,与HPI口的主机中断信号nHINT相连。nHCS一直接地,而nHAS口和ALE口相连接,在HCNTL0/I、HBIL和HR/W信号有效之后,设置nHDSl为低电平,则实现了读写的数据选通,从而完成C51对VC5402 HPI口的读写操作。在数据交换过程中,C51向HPI发送数据时,通过置VC5402的HPI控制寄存器HPIC中的DSPINT位为l来中断VC5402。C51接收来自HPI的数据时通过查询方式,当VC5402 DSP准备发送数据时,置nHINT信号为低;C51查询到nlNTl为低时,调用接收数据子程序来实现数据的接收。

  C51与VC5402的并行连接如图5所示。

  主机接收和发送初始化程序(以图5连接为例):

RTITEADDRESS:;写入VC5402存储器地址信息

  CLR P1.2

注:①HBlL脚在传输过程中指示当前字节为第l还是第2字节。

  ②为方便DSP自举引导加载程序.常采用将nHlNT脚直接与INT2脚相连。

  图5 AT89C51与V05402的并行连接

S

ETB P1.3 ;主机可读写HPlA地址寄存器

CLR P1.0 ;主机要求写选通HPI一8

MOV P0,A ;写入8位地址

CALL DELAY ;等待地址写入完成

READDATA:;读出VC5402存储器数据信息

SETB P1.2

CLR P1.3;主机可读写HPID数据寄存器

SET P1.0;主机要求读选通HPI一8

MOVA,P0;读出8位数据

CALL DELAY ;等待数据读出完成

WRITEDATA:;写入VC5402存储器数据信息

SETB Pl.2

CLR P1.3;主机可读写HPID数据寄存器

CLR P1.0;主机要求写选通HPI一8

MOV P0,A;写入8位数据

CALL DELAY;等待数据写入完成

  不管是串行连接还是并行连接,都要考虑到VC5402是采用3.3 V供电,C51采用5 V供电。两者之间存在信号电平的差异而不能直接相连,应互连接口隔离器件。

 结 语

  在SCI串行通信调试中,发现由于DSP的运行频率在100 MHz左右,造成内部数据时钟CLKG过快,不能与C51串口采样频率保持一致,需要软件加以处理,这样会额外消耗DSP资源。因此可以考虑将发送时钟CLKX和接收时钟CLKR接外部时钟源(慢于DSP时钟),以保证与C51串口采样频率的一致。另外在并行通信的调试中,可以知道通过HPI-8口并行通信完全没有硬件和软件开销,由DSP自身的硬件来协调冲突,因此HPI-8口使用于与单片机构件较好的主从双CPU处理器平台。

关键字:缓冲  寄存器  时钟 引用地址:DSP与单片机通信的多种方案设计

上一篇:TMS320F28xx DSP中内部Flash的应用研究
下一篇:DSP与单片机通信的多种方案设计

推荐阅读最新更新时间:2024-05-02 20:27

stm32影子寄存器、预装载寄存器
一直没搞清楚stm32定时器的TIM_OC1PreloadConfig、TIM_ARRPreloadConfig函数的作用,影子寄存器、预装载寄存器、重载寄存器的概念。今天来研究一下: 首先看定时器的框图: 图中有阴影的小方框,代表该功能对应的寄存器有影子寄存器,也就是:PSC预分频器、自动重装载寄存器、REP寄存器和4个通道的捕获/比较寄存器。 可以看到这几个寄存器都是经常用到的,而且存在定时器工作过程中修改他们的可能性。在定时器工作过程中修改他们的值,就会出现一个问题了:如果上次ARR的值是200,通道1的比较寄存器CCR1值是100,产生占空比为50%的PWM。这个时候我要改变PWM的频率,我把ARR的值改为10
[单片机]
stm32影子<font color='red'>寄存器</font>、预装载<font color='red'>寄存器</font>
STM32F3实时时钟RTC-闹钟和唤醒中
STM32RTC使用步骤: 打开PWR时钟和Backup区数据访问 若使用外部低速时钟(LSE),打开LSE并等待起振 选择和打开RTC时钟,等待时钟同步 配置时间格式,分频系数等 根据需要配置时钟,日期,闹钟,唤醒,输出,时间戳,备份寄存器等模块 根据需要配置和打开中断,其中 RTC Alarm ——EXTI line 17 RTC tamper and Timestamps——EXTI line 19 RTC wakeup——EXTI line 20 下面的代码配置日期,时间,当前时间设置为 15年05月31日,星期日(7),15:50:40,打开闹钟A和唤醒中断,每一秒钟来一次中断,15:50:45
[单片机]
7课:单片机的特殊功能寄存器
通过前面的学习,我们已知单片机的内部有ROM、有RAM、有并行I/O口,那么,除了这些东西之外,单片机内部究竟还有些什么,这些个零碎的东西怎么连在一起的,让我们来对单片机内部的寄存器作一个完整的功能分析吧! 下图中我们能看出,在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在一个51单片机的内部包含了这么多的东西。 对上面的图进行进一步的分析,我们已知,对并行I/O口的读写只要将数据送入到对应I/O口的锁存器就能了,那么对于定时/计数器,串行I/O口等怎么用
[单片机]
7课:单片机的特殊功能<font color='red'>寄存器</font>
采用AT89C2051的智能时钟
智能电子钟的功能: 1。 全日历计时。 2。 12/24小时转换。 3。 8路定时输出(可关/开控制) 4。 误差:15S+1uS 5。 大、小月,润年,周,自动追踪 二、 调校: 上电后,电子钟显示“1:00”。 1。 8路定时时间查询 按下K1键依此显示8路定时时间。星期位显示:“H”表示:打开当前定时输出;“L” 表示:关闭当前定时输出。此时按K2键可进行“H”、“L”的切换。所有输出,均由蜂鸣器输出! 2。 显示状态的控制 按下K2键可进入以下工作状态: 1)12小时/ 日月交替显示。 2)12小时固定显示。 3)24小时/ 日月交替显示。 4)24小时固定显示。 3。 校时 按下K2键3S后,进入校时菜
[单片机]
采用AT89C2051的智能<font color='red'>时钟</font>
西门子S7-300PLC的寄存器间接寻址问题
在FC1程序中,第4条指令L     W ,后面注释是取指针第1个字内的数据块编号,第9条指令L     D ,后面的注释是取指针内数据区的起始地址。这2条指令格式一样,怎么一个是取地址内的内容(数据块编号),一个是取起始地址? 答:下图是参数类型Pointer的结构: 下面是书中的程序: 参数类型为Pointer的输入参数Start_Addr占6个字节,P##Start_Addr是第1个字节的地址。执行第二条指令后,AR1中是输入参数Start_Addr(指针)的首地址,所以第4条指令装入累加器的是指针第1个字内的数据块编号,第9条指令“L   D ”装入的是指针第2个字节开始的双字,即指针内数据区的起始地址。
[嵌入式]
基于S3C2410的RTC模块应用设计
引言   本文在介绍S3C2410的基础上,对RTC内部结构及工作机理进行了分析,最后给出了专用于RTC功能的应用开发。 硬件结构 S3C2410处理器简介   S3C2410是三星公司推出的16/32位RISC微处理器,它是为应用于小型掌上设备和高性价比、低功耗、高性能的嵌入式系统应用而提供的微控制解决方案。S3C2410使用了ARM920T内核。 图1 S3C2410内部RTC模块结构图 硬件构架   RTC模块能够在系统断电的情况下由后备电池供电继续工作,它能将8位数据转换为BCD码的格式传送给CPU。这些数据包括秒、分、时、日期、星期、月、年。RTC模块需要一个外部晶振提供32.768kHz的频率才能工作,它也能
[应用]
对高阻抗缓冲放大器的输入实现ESD保护
二极管和保护装置抑制瞬时高压静电放电。 在某些测量应用中,如pH值(酸度)和生物电势需要高阻抗缓冲放大器。虽然有几个半导体制造商提供具有低偏置和输入偏置电流特点的放大器芯片,配上传感器电缆可能会因为ESD(静电放电)对放大电路造成损害。图1显示一种不令人满意的方法实现ESD保护。电阻R 1 抑制ESD的放电电流,而二极管D 1A 和D 1B 钳住放大器IC 1 的输入到供电电源轨。不幸的是,当并联pH值传感器的为400MΩ输入阻抗时,即使采用低漏电流二极管,如Fairchild公司的MMBD-1503A,仍引入很大的偏置电压。 图2中的电路提供另一个方法。Analog Devices公司的低输入偏置,低偏置电流的AD8603
[模拟电子]
AFIO时钟误区及其用法解析
AFIO时钟误区解析 AFIO误区 我们一般错误理解为“启用IO口的复用功能就要使能AFIO时钟”,但是我们回想一下GPIO的结构图仔细了解一下GPIOx_Pin的结构: 在上图中,从端口引脚传入的信号进入了复用输入通道,而且我们看到流入普通GPIO输入通道的信号同样可以流入复用功能输入通道,这表明“与引脚复用输入通道相连的内外设(内外设就是IIC这类设备)这些设备根本不需要AFIO时钟就可以接收到所在引脚输入的信号”。 复用功能为什么不用AFIO? 我们还了解一个名词叫“复用功能”,复用功能不同于端口重映射,复用功能是“上图中复用输入输出通道直接相连的内外设”,我们只要将输出模式配置为复用输出模式,输入配置为对应内外设要
[单片机]
AFIO<font color='red'>时钟</font>误区及其用法解析
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved