板子调试记之串口通信续篇

本篇的引出是因为在16C550的整个调试阶段的最后,出现了新的问题和获得了新的经验。

从整个板子调试至今,依次出现了以下情况:
  1.16C550不工作,因为片子的晶振没有接上.
  2.发送数据不正常,因为中间的光隔有问题,现在把光隔去掉了,直接让16C550的7脚接收RX和8脚发送TX直接连接到MAX3232的9脚ROUT2和10脚DIN2.

查看更多...

分类:DSP | 固定链接 |评论: 0| 查看次数: 453 | 返回顶部

板子调试记之串口通信

为了便于说明问题,先假设板子属于以下的三种情况:
  1)DSP: TMS320VC33
  2)拓展的串口: 16C550, 只使用14脚接入1.8432MHz晶振.
  3)为了避免干扰,16C550结果光隔接给MAX3232,以便匹配电脑电平.

查看更多...

分类:心情日记 | 固定链接 |评论: 0| 查看次数: 393 | 返回顶部

TMS320VC33的启动顺序


  这里说的"启动顺序",是指在DSP加电启动时从哪里读取程序到RAM中.需要说明的是我这里的FLASH片选接入TMS320VC33(以下简称VC33)的PAGE0(地址范围:000 0000~03F FFFFh),并把程序放入了FLASH的0x1000地址处(因为在MCBL/MP=1的情况下,VC33处于所谓的微计算机/引导加载模式).我们的VC33处理器有两种运行模式:微处理器模式(Microprocessor Mode)和微计算机/引导加载模式(Microcomputer/Bootloader Mode).以下把微计算机/引导加载模式简称为微计算机模式.区别我们的VC33运行于何种模式下,只要看看我们的电路板中VC33的第125脚的MCBL/MP是接低电平(微处理器模式)还是高电平(微计算机模式)就行了.
  为什么要把程序写入0x1000开始的地址处呢?这就是上面为什么介绍了VC33处理器运行的两种模式,因为目前我手上的板子就是MCBL/MP=1,VC33运行于微计算机模式下,所以0000h~0FFFh保留为引导加载程序.什么意思呢?这样认为:虽然我的FLASH接到了VC33的PAGE0,但是VC33本身固化好了自己的引导程序在地址0h~0FFFh地址处,所以FLASH的0h~0FFFh实际上就不在起作用了.也就是说在此种情况下,在000 0000h~03F FFFFh地址空间中,0h~0FFFh用的VC33内部的ROM,而此后的1000h~03F FFFFh用的就是我们外接的FLASH啦.
  VC33的启动顺序是先检测INT3(第119脚)->INT0(第122脚)->INT1(第121脚)->INT2(第120脚),哪个有效(指低电平有效),就会加载对应的地址中的程序.如果INT3有效,就从串口加载程序;如果INT0有效,就从1000h地址处开始加载;如果INT1有效,就从400000h地址处开始加载;如果INT2有效,就从FFF000h地址处开始加载.因为我要从1000h地址处开始加载程序,所以一开始要保证INT3为高电平,INT0为低电平才不至于走到INT3时就停止下来,呵呵^_^. 至于我说的这部分内容,如果有质疑可以参看官方的手册:TMS320C33 User's Guide,见Chapter 11中P365页的图11-1. 需要注意的一点就是在加电引导过程中MCBL/MP必须一直保持高电平.

查看更多...

分类:DSP | 固定链接 |评论: 0| 查看次数: 450 | 返回顶部

Ubuntu下的第一个入门程序

我相信大家和我一样,再成功安装完Ubuntu之后。第一件事就是想运行一个C语言编写的程序,呵呵。一来可以熟悉C语言,二来可以了解一下在Linux下是怎样运行我们的C语言程序的。废话少说,进入正题吧 ^_^

首先,介绍一下GCC。你可以把它当作一种编译工具,就是把我们写的C程序编译成应用程序(或者叫可执行文件)
其次,按照下面的代码自己写一个C文件吧。我暂时取名为:Hello.c,并放置我的桌面上。代码如下所示:

查看更多...

分类:Linux | 固定链接 |评论: 1| 查看次数: 559 | 返回顶部