关于 My4TH 的一些试验(四):一些外设

存储扩展卡与底板

存储扩展卡

为方便使用外接的 EEPROM 存储扩展卡,本站提供的固件中,相邻的块位于同一片 EEPROM 上,且块序号按 EEPROM 地址排列。

外接存储扩展卡使用 USB 3.0 Type-A 接口,电源触点与标准 USB 接口兼容,信号触点用于 I2C 接口和寻址等:

EEPROM Card Interface

其中 SOCKET 连接 EEPROM 的地址线 A1

EEPROM on Card

存储扩展卡的 KiCad 工程文件在这里下载。

EEPROM Card

底板

用于连接存储扩展卡、提供 5.2V/5.4V 电源(用于工作在 20MHz 和 22.1184MHz)的底板的 KiCad 工程文件在这里下载。底板上还提供了 DS1307 实时时钟和 PCA9557 I/O 扩展。

Backplane

Backplane with My4TH SMT

My4TH SMT 和底板的连接器选用通用的 0.8mm 间距 2x16 双槽板对板连接器(合高 4mm,例如这个这个,或者这个。My4TH 板上用母座,底板上用公座)。总线连接器选用 PHB 2x20 型弯插座。

电源部分电路如下图。SW1 和 SW2 选用外形尺寸 6.6x2.7mm,脚距 1.5mm 的 7 脚拨动开关(例如这个)。

Backplane Power

DS1307 和 PCA9557 驱动

底板上的 DS1307 实时时钟占用 I2C 地址 $D0。

\ C DS1307 Driver
: dec2bcd ( dec -- bcd ) 10 /mod 16 * + ; \ 2 digits only
: bcd2dec ( bcd -- dec ) 16 /mod 10 * + ;
: rtc-rh  $d0 i2c-rr drop ;   : rtc-wh  $d0 i2c-wr drop ;
\ 0:sec(use rtc-sc@/!) 1:min 2:hour 3:day 4:date 5:month 6:year
: rtc-r ( reg -- dat ) rtc-rh bcd2dec ;
: rtc-w ( dat reg -- ) swap dec2bcd swap rtc-wh ;
: rtc-sc@  0 rtc-rh 127 and bcd2dec ;
: rtc-sc!  dec2bcd 0 rtc-rh 128 and or 0 rtc-wh ;
: rtc-stop  0 rtc-rh 128 or 0 rtc-wh ;
: rtc-start  0 rtc-rh 127 and 0 rtc-wh ;
\ Forth 2012 Facility Extension word TIME&DATE
: time&date ( -- sec min hour date month year )
   rtc-sc@ 1 rtc-r 2 rtc-r 4 rtc-r 5 rtc-r 6 rtc-r 2000 + ;

使用下面的驱动时,addr 为底板上 PCA9557 I/O 扩展器的 I2C 地址 $34。

\ C I2C PCA9557 Driver
: p57-pc ( addr -- ) $00 $02 rot i2c-wr drop ; \ polarity clear
: p57-dir ( dir addr -- ) swap $03 rot i2c-wr drop ;
: p57-wo ( val addr -- ) swap $01 rot i2c-wr drop ;
: p57-ro ( addr -- val ) $01 swap i2c-rr drop ;
: p57-ri ( addr -- val ) $00 swap i2c-rr drop ;

EPROM 锁紧座

使用锁紧座可以方便地测试不同的 EPROM。锁紧座和 My4TH SMT 板之间采用 6mm 的弹簧顶针(例如这个这个)连接。 KiCad 工程文件在这里下载。

EPROM ZIF Socket

1602 液晶屏与按键

借助 PCA9557 I/O 扩展器和 74HC165 移位寄存器,可以用 I2C 接口驱动 1602 液晶屏与按键:

I2C LCD and Button

是一个时钟的例子,其中用到了 1602 液晶屏、按键,以及 DS1307 实时时钟。KiCad 工程文件在这里下载。

I2C Clock