有时候我必须选择一个人过冬 习惯在冰天雪地里追梦

DIY一个小型计算机系统(5)

上一篇 / 下一篇  2007-09-22 22:57:41 / 个人分类:工作备忘

最近越来越懒,进度好慢。

有多方面的主要改动:

1、考虑了多方面的原因,放弃把两个MCU设计成绝对平等的策略,改为让两个MCU分别占用一些外设资源。

2、考虑到越来越多芯片都采用3.3V低电压,统一把3.3V作为芯片电压选择标准,两个MCU也换成STC12LE5412(3.3V版本)

3、音频解码芯片改为VS1003B,原先的CP1306由于厂家不提供详细的datasheet,无法写驱动,只好换成VS1003B,VS1003B是SPI控制/传输的音频解码芯片,功能比CP1306强大,支持MIDI/MP3/WAV硬解码并立体声输出,不过,价格也高上一大截,无法申请样品,网购要25元/片-_-!VS1003B还需要两种不同的电压才能工作,麻烦,只好又向国半申请5片2.5V的稳压芯片样品。

最近的进展有:

1、共享内存冲突得以解决,考虑了几种方案,包括硬件优先级仲裁和软件规避,最后选择了软件规避,硬件无需变化,只是调整了软件,把MCU1跟MCU2的读写速度调整成不一样,通过在MCU2的读写RAM代码里插入若干NOP,人为降低MCU2的读写速度来避开。MCU1是在查询到RAM空闲时则立即可以开始访问,而MCU2在查询到RAM空闲时,会在两个NOP指令(两个周期)后再次新查询RAM状态,如果仍然为空闲才会开始访问。如果发生了访问冲突,那么MCU1会优先访问RAM,而MCU2只能在MCU1访问完毕后才能访问RAM。

2、P1口的复用。P1口两种作用,一是作为RAM的高位地址线,二是作为SPI总线,因此产生了复用问题。解决方法是使用两片74HC125四线缓冲器进行隔离。当某个MCU要访问RAM时,必须通过拉低RAM_EN及74HC125的EN脚,让P1.4/P1.5/P1.6/P1.7这四根线的数据通过74HC125到达RAM上的地址脚。而平时读写SPI总线时,保持RAM_EN及74HC125的EN脚为高,P1.4/P1.5/P1.6/P1.7当作SPI总线使用,由于74HC125的隔离作用,数据不会到达RAM端,也不会干扰另一个MCU的SPI总线上的数据。74HC125支持3.3V而74LS125不支持。

3、液晶显示屏采用并口通讯方式,也设计成两个MCU都能访问,通过DIS_EN脚来判断是否能访问显示屏,虽然硬件上支持两个MCU控制显示屏,但实际上不打算让两个MCU都能控制,我只打算在其中一个MCU加入显示代码,究竟是哪个MCU负责显示还没决定,要看最后两个MCU的负载情况还有代码空间多少才能决定。

4、画好SD/MMC卡座的pcb封装,PS/2插座pcb封装,USB插座pcb封装,还有各种标准元件的封装,现在还缺电源输入插座、立体声耳机3.5mm插座,还得买来实物,然后量尺寸画封装。

一些考虑和担心:

1、每个MCU都有12KROM代码空间,可能不够用,因为USB读写U盘及SPI读写MMC卡的FAT/FAT16文件系统实现会占用相当一部分代码。

2、查看了MMC卡的datasheet,读数据时貌似支持单个BYTE的读出,但写入时必须以BLOCK的方式写入,每个block的大小必须是512B的整数倍,现在选用的MCU内存只有刚好512B,必须用到扩展的32KB RAM作为缓存,恐怕实现比较困难,因为现在设计里RAM是用软件模拟时序来读写,并不是硬件时序读写,不知道会不会有问题。万一硬件支持不了写操作,唯有放弃MMC卡的写功能,仅支持读功能。

3、打算使用74HC164/165对IO口进行扩展,尝试扩展中断,打算尽量使用中断来提高系统对键盘/MP3解码的响应速度。


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-12-03  
 123456
78910111213
14151617181920
21222324252627
28293031   

数据统计

  • 访问量: 28546
  • 日志数: 189
  • 图片数: 24
  • 文件数: 6
  • 书签数: 4
  • 建立时间: 2006-04-20
  • 更新时间: 2008-11-30

RSS订阅

Open Toolbar