更多与FPGA相关的技术信息访问我们的[电子森林](https://www.eetree.cn)资源网站以及[小脚丫FPGA的资源专页](https://www.eetree.cn/category/11),你也可以利用电子森林平台以**脑图**的方式做笔记整理自己的学习心得,并将有分享价值的信息发布出来,供其他人阅读。 ====== 计算器扩展功能模块 ====== 小脚丫FPGA计算器模块是STEP团队推出的可配合小脚丫FPGA核心板和底板使用的扩展板卡,基于该板卡可以实现一个简易计算器的所有功能。 {{ :计算器全照.jpg?400 |}} ===== 计算器模块结构组成 ===== 计算器模块结构如下图所示,主要由触摸按键、触摸检测芯片CAP1298、128*32 LCD显示屏和DIP接口等四部分组成。 {{ ::计算器模块照.jpg?300 |}}\\ \\ 该模块PCB做有20个触摸按键,其中触摸检测芯片选用了Microchip的电容触摸控制器CAP1298,该触摸芯片具有8路触摸按键检测功能,因此采用了3片CAP1298来检测20个触摸按键的状态。CAP1298与FPGA采用I2C总线的通信方式传输按键状态。显示屏选用了晶联讯电子公司的128*32的单色点阵液晶模块JLX12832G-520,内置驱动芯片,FPGA可以通过串行接口驱动该模块显示16*16汉字或16*8字符。模块采用了Arduino的标准接口,完全兼容Arduino UNO接口。 {{ ::计算器结构框图.png? |}} ===== 计算器功能设计 ===== 该模块配合小脚丫FPGA的核心板和Arduino扩展底板可以实现一个简易计算器的加减乘除功能,LCD可以显示12位数字。 {{ :计算器功能框图.png? |}} ===== 硬件资源介绍 ===== ====触摸检测==== 触摸按键检测部分采用Microchip公司的电容触摸控制器CAP1298,该芯片内置电容触摸检测和校准功能,每个芯片可以独立检测8路的触摸按键容值变化并将检测结果保存在内部的寄存器中,可以通过SMBUS或标准的I2C总线来读写芯片内的寄存器值。 {{ :cap1298原理图.png? |}} 芯片内部有众多的参数设置和状态寄存器,但是大部分寄存器在出厂时已经设置了默认值,一般情况下无需重新设置就可以使用。我们只需要操作00h Main Control寄存器和03h Sensor Input Status 两个寄存器就可以实现触摸按键的检测工作。 {{ ::cap1298寄存器.png?500 |}} \\ Main Control寄存器控制芯片的电源状态和指示中断状态。Sensor Input Status寄存器返回采样电容触摸传感器输入值,每一位对应一个触摸按键通道的返回值,当一个通道的触摸按键被触摸时,03h寄存器对应位会被置1,同时产生中断,当01h主控制器的INT位被清零时,该状态位会被清零。 FPGA使用I2C总线操作步骤:首先读取03h地址寄存器值,如果03h寄存器的值不是0,则表示有对应位的按键被触摸,然后向00h地址寄存器写00h,则将03h清零,以便下一次检测。 ====显示模块==== 显示模块选用了晶联讯电子公司的128*32的单色点阵液晶模块JLX12832G-520,内置矽创公司的驱动芯片ST7567,FPGA可以通过串行接口驱动该模块显示16*16汉字或16*8字符。 {{ ::lcd原理图.png? |}} CS是LCD的片选信号,低电平有效,CS信号为低时LCD可以被驱动。 RST是复位信号,低电平有效,上电时需要将该信号置低以对LCD复位。 SCK和SDA分别是串行时钟和串行数据,符合SPI时序。 RS是数据和命令选择信号,RS为低时,表示写指令到LCD,RS为高时,表示写数据到LCD。 {{ ::lcd时序图.png?600 |}} {{ ::lcd指令表.png?600 |}} ====接口==== 该计算器模块需要小脚丫FPGA核心板和Arduino底板配合使用,扩展接口按照Arduino接口标准设计,所以该板也可以配合Arduino开发板使用。 {{ ::计算器接口.png?600 |}} ====引脚对应表==== {{ ::calculator引脚分配表.png?400 |}} ===== 使用示例 ===== ==== 相关知识点 ==== * [[智能接近系统设计|FPGA驱动I2C总线设备举例]] * [[lcd显示模块|FPGA驱动SPI接口LCD举例]] ==== 演示程序 ==== 演示程序分为Lattice MXO2、Intel MAX10和arduino三个版本,使用时请根据所使用的板子和FPGA型号选择。\\ {{::step-calculator-mxo2.zip|}}\\ {{::step-calculator-max10.rar|}}\\ {{::step-calculator-arduino参考代码.rar|}}\\ ===== 原理图说明 ===== {{ :计算器原理图.png? |}} ===== PCB布局布线 ===== ^{{ :计算器pcb1.png?265 |}}|^{{ :计算器pcb2.png?300 |}}^ ^{{ :计算器pcb3.png?300 |}}|^{{ :计算器pcb4.png?285 |}}^ ===== 参考文档 ===== {{::step_fpga计算器基本信息.docx|step_fpga计算器基本信息}}\\ {{::基于step_fpga的计算器模块用户开发手册.pdf|计算器模块用户开发手册}}\\ {{::硬件设计详细说明.docx|计算器模块硬件设计详细说明}}\\ {{::cap1298.pdf|CAP1298数据手册}} \\ {{::jlx12832g-520-bn中文说明书.pdf|LCD使用手册}} \\ {{::st7567.pdf|LCD驱动芯片ST7567数据手册}} \\