原创 TIDSP C6203B 实战经验点滴

2010-11-18 22:16 1430 19 20 分类: 消费电子

1、EMIF或XBUS异步读/写脉冲宽度
C6203B为了能与不同存取(Access)速度的异步设备(或器件)如SRAM、Flash等连接,可通过设置相关寄存器的参数来控制读/写脉冲的宽度,EMIF总线的寄存器为CECTL0~3,XBUS总线为XCECTL0~3,总线读/写脉冲的宽度由这些寄存器中的“Setup”和“Strobe”位值决定。
加电复位后,缺省值(最大值)为:Setup=1111(15),Strobe=111111(63),这样,Setup+Strobe=15+63=78,如果使用250MHz系统时钟,其周期T=4ns,那么78x4=312ns。也就是说,EMIF/XBUS总线最低可接300ns的异步设备(器件),好在一般SRAM、Flash等的存取速度均在100ns左右,故都可直接与EMIF/XBUS总线相连。

2、DMA传输问题
C6203B进行DMA传输时虽然可以字节(8bit)方式传输,但在DMA Config时,源/目的地址仍使用Uint32类型指针,因此,如果只传输1个字节,也要使用Uint21指针变量。如果确要使用Uint8型的,则必须定义一个元素是4的整数倍的数组,如:
Uint8 buf[4];
否则DMA传输数据不正确。

3、外部中断触发沿
C6023B的外部中断INT4~INT7缺省情况是“下降沿”触发的,但在BIOS配置中可以更改为“上升沿”触发,有些用户往往忽略了这一点,例如,初学者先是买一套开发板学习,然后参照开发板设计自己的硬件电路,再把开发板的源程序例子移植到自己的系统中,但在调式中断时发现总是不对却又找不到原因。其实原因很简单,就是开发板可能在BIOS配置时将某个中断改为“上升沿”触发了,而用户自己设计的电路仍是“下降沿”触发的。只要修改一下BIOS配置就可以了。

4、通用I/O口的复位状态和驱动电流
C6203B的缓冲串口(McBSP)可以配置成通用I/O口使用,系统加电复位后,未配置前所有缓冲串口引脚均处于“高阻”状态,用户可根据需要,对某个I/O口加4.7K"上拉“电阻或20K”下拉“电阻使其复位后固定在"高电平”或“低电平”;此外,缓冲串口作为普通I/O口使用时,其最大驱动电流为8mA,因此驱动负载时要注意,例如驱动光耦时,限流电阻要选择适当,以HCPL-181为例,电压为3.3V,限流电阻取510Ω就可以,驱动电流I=3.3/510=6mA,既达到181开关导通电流(5mA),又未超过最大驱动电流(8mA)。

5、C++地址指针增量重载运算符“++”
在一般的C++中,增量运算符“++”表示“加1”,在DSP C++(CCS)编译器中,对于普通变量,仍表示“加1”,但对于不同类型的地址指针变量,重载运算符“++”时有不同含义:
32位地址指针(unsigned int *):加4(一个双字);
16位地址指针(unsigned short *):加2(一个字);
8位地址指针(unsigned char *):加1(一个字节)。
同理,“--”运算符也有类似的情况。下面举一个例子来说明:
假设C6203B的EMIF总线上CE1(0x01400000)接的是8bit并行Flash(如:SST39VF080),且DSP的EA21~EA2接Flash的A19~A0。在程序中定义:
Uint32 data,*dp=CE0;
那么指令:data=*dp++;第一次data取的是Flash的0~3单元的内容,然后dp指向Flash的4单元;第二次data取的是Flash的4~7单元内容...
如果定义:Uint8 data,*dp=CE0;由于EA2接A0,那么必须使用:data=*(dp++<<2);来读取Flash的0,1,2...单元的内容。

文章评论1条评论)

登录后参与讨论

xucun915_925777961 2010-12-29 13:16

在附件中~~

用户1572027 2010-12-24 14:22

在哪里看啊!

用户1277994 2010-11-19 10:53

喜欢这样的实战总结文章。希望能给到同行业借鉴。
相关推荐阅读
用户1037795 2014-09-29 14:57
高速LVDS接口信号完整性处理实例
  一、系统介绍 EMCCD相机由图像传感器、驱动电路、FPGA(Spartan-3)、LVDS接口和电源等组成。LVDS输出接口使用2片DS92LV1021,每片实现10bit并行数据到...
用户1037795 2014-08-20 14:15
关于Xilinx FPGA JTAG下载时菊花链路中的芯片数量
  当一个系统中含有多片(2片以上)Xilinx FPGA、CPLD或PROM(FLASH)时,可采用单一JTAG口以菊花链(Daisy Chain)形式将所有芯片串联起来实现下载编程,如下图...
用户1037795 2014-08-12 07:50
NiosII程序编译时出现onchip_mem不够问题及解决方法
开发Altera Nios II软件可使用Nios II IDE或 Nios II Software Build Tools for Eclipse(即:Nios II SBT for Eclip...
用户1037795 2014-08-11 15:08
Altera QuartusII及Cyclone IV E使用经验
  1、仅C8L、IC8L、C9L使用1.0V核电压(VCCINT),其它速度的均使用1.2V核电压。 2、对于作为LVDS传输的Bank必须接2.5V的VCCIO,参考数据手册表1-20...
用户1037795 2014-08-07 14:39
Altera FPGA带NiosII内核程序的JTAG下载方法总结
  1、对于Altera FPGA,含Nios II时需要下载的文件有4种:.sof 文件,.pof 文件,.jic 文件,.elf 文件。 下载文件 ...
用户1037795 2014-08-06 10:18
Quratus II中 Nios II 硬件设计工具SOPC Builder与Qsys的区别
  1、 SOPC(System On a Programmable Chip.)即可编程片上系统,SOPC Builder是Quartus II中传统的Nios II 硬件设计工具,可以灵活...
我要评论
1
19
关闭 站长推荐上一条 /2 下一条