更多与FPGA相关的技术信息访问我们的电子森林资源网站以及小脚丫FPGA的资源专页,你也可以利用电子森林平台以脑图的方式做笔记整理自己的学习心得,并将有分享价值的信息发布出来,供其他人阅读。
计算器模块结构如下图所示,主要由触摸按键、触摸检测芯片CAP1298、12832 LCD显示屏和DIP接口等四部分组成。
该模块PCB做有20个触摸按键,其中触摸检测芯片选用了Microchip的电容触摸控制器CAP1298,该触摸芯片具有8路触摸按键检测功能,因此采用了3片CAP1298来检测20个触摸按键的状态。CAP1298与FPGA采用I2C总线的通信方式传输按键状态。显示屏选用了晶联讯电子公司的12832的单色点阵液晶模块JLX12832G-520,内置驱动芯片,FPGA可以通过串行接口驱动该模块显示1616汉字或168字符。模块采用了Arduino的标准接口,完全兼容Arduino UNO接口。
触摸按键检测部分采用Microchip公司的电容触摸控制器CAP1298,该芯片内置电容触摸检测和校准功能,每个芯片可以独立检测8路的触摸按键容值变化并将检测结果保存在内部的寄存器中,可以通过SMBUS或标准的I2C总线来读写芯片内的寄存器值。
芯片内部有众多的参数设置和状态寄存器,但是大部分寄存器在出厂时已经设置了默认值,一般情况下无需重新设置就可以使用。我们只需要操作00h Main Control寄存器和03h Sensor Input Status 两个寄存器就可以实现触摸按键的检测工作。
Main Control寄存器控制芯片的电源状态和指示中断状态。Sensor Input Status寄存器返回采样电容触摸传感器输入值,每一位对应一个触摸按键通道的返回值,当一个通道的触摸按键被触摸时,03h寄存器对应位会被置1,同时产生中断,当01h主控制器的INT位被清零时,该状态位会被清零。
FPGA使用I2C总线操作步骤:首先读取03h地址寄存器值,如果03h寄存器的值不是0,则表示有对应位的按键被触摸,然后向00h地址寄存器写00h,则将03h清零,以便下一次检测。
显示模块选用了晶联讯电子公司的12832的单色点阵液晶模块JLX12832G-520,内置矽创公司的驱动芯片ST7567,FPGA可以通过串行接口驱动该模块显示1616汉字或16*8字符。 CS是LCD的片选信号,低电平有效,CS信号为低时LCD可以被驱动。 RST是复位信号,低电平有效,上电时需要将该信号置低以对LCD复位。 SCK和SDA分别是串行时钟和串行数据,符合SPI时序。 RS是数据和命令选择信号,RS为低时,表示写指令到LCD,RS为高时,表示写数据到LCD。
演示程序分为Lattice MXO2、Intel MAX10和arduino三个版本,使用时请根据所使用的板子和FPGA型号选择。
step-calculator-mxo2.zip
step-calculator-max10.rar
step-calculator-arduino参考代码.rar