关于 My4TH 的一些试验(四):一些外设
存储扩展卡与底板
存储扩展卡
为方便使用外接的 EEPROM 存储扩展卡,本站提供的固件中,相邻的块位于同一片 EEPROM 上,且块序号按 EEPROM 地址排列。
外接存储扩展卡使用 USB 3.0 Type-A 接口,电源触点与标准 USB 接口兼容,信号触点用于 I2C 接口和寻址等:
其中 SOCKET
连接 EEPROM 的地址线 A1
:
存储扩展卡的 KiCad 工程文件在这里下载。
底板
用于连接存储扩展卡、提供 5.2V/5.4V 电源(用于工作在 20MHz 和 22.1184MHz)的底板的 KiCad 工程文件在这里下载。底板上还提供了 DS1307 实时时钟和 PCA9557 I/O 扩展。
My4TH SMT 和底板的连接器选用通用的 0.8mm 间距 2x16 双槽板对板连接器(合高 4mm,例如这个和这个,或者这个。My4TH 板上用母座,底板上用公座)。总线连接器选用 PHB 2x20 型弯插座。
电源部分电路如下图。SW1 和 SW2 选用外形尺寸 6.6x2.7mm,脚距 1.5mm 的 7 脚拨动开关(例如这个)。
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 工程文件在这里下载。
1602 液晶屏与按键
借助 PCA9557 I/O 扩展器和 74HC165 移位寄存器,可以用 I2C 接口驱动 1602 液晶屏与按键:
这是一个时钟的例子,其中用到了 1602 液晶屏、按键,以及 DS1307 实时时钟。KiCad 工程文件在这里下载。