编辑: 过于眷恋 | 2019-07-04 |
32 个为 SRAM 型,掉电不保存. 图5AT7456E 的第一页 EEPROM 字库 图6AT7456E 的第二页 EEPROM 字库 【SPI 接口读写操作】
7456 支持高达 10MHz 的串口时钟,大部分的命令为
16 位,高8位(MSB)代表寄存器 地址,低8位(LSB)代表数据.但有
2 个例外:
1、当执行自动递增写入显示字符操作时,内部自动产生
8 位地址,串口只需要输入
8 位字 符(图7) . 图7自动递增模式下的写操作
2、16 位工作模式时,读取字符数是
24 位操作(8 位地址和
16 位数据) ,参见图
8 图8在16 位模式下读取字符地址和属性 当采用 MCU 的SPI 控制器读写
7456 时,需要注意 SPI 数据的位宽.当MCU 缺少 SPI 控制器 时,可以使用 MCU 的GPIO 口模拟 SPI 接口时序.本文给出基于
51 单片机和 STM32F103 的AT7456(E)基本读写函数,供大家参考. 可以供 C 调用的 SPI 接口
51 单片机汇编代码: PUBLIC _write_at7456_addr_data PUBLIC _read_at7456_addr_data PUBLIC _write_at7456_data PUBLIC read_at7456_data // at7456 nCS BIT P3.7 SCLK BIT P3.5 SDIN BIT P3.6 SDOUT BIT P3.4 ;
调整 REPT 后的参数,可以保证 SPI 的时钟速率小于 10MHz DELAYS MACRO REPT
0 // 根据 MCU 的运行速度进行设置 NOP ENDM ENDM at7456 写16bit ;
功能:写地址和数据到 at7456 | ;
入口:addr --- 地址,A6..A0 | ;
dat --- 数据 | ;
出口:NONE | ;
影响资源:A,R5, R7 | ;
void write_at7456_addr_data(unsigned char addr, unsigned char dat) ;
r7 r5 _write_at7456_addr_data: CLR SCLK DELAYS CLR nCS MOV A, R7 // address MOV R7, #8 LOOP_WR1: RLC A MOV SDIN, C DELAYS SETB SCLK // at7456 在时钟的上升沿移入数据 DELAYS CLR SCLK DELAYS DJNZ R7, LOOP_WR1 DELAYS MOV R7, #8 MOV A, R5 // 写数据 LOOP_WR2: RLC A MOV SDIN, C DELAYS SETB SCLK DELAYS CLR SCLK DELAYS DJNZ R7, LOOP_WR2 DELAYS SETB nCS SETB SCLK SETB SDIN RET at7456 读16bit ;
功能:从at7456 读取
1 字节数据 | ;
入口:addr --- 地址,A6..A0 | ;
出口:dat --- 数据 | ;
影响资源:A,R7 | ;
unsigned char read_at7456_addr_data(unsigned char addr) ;
r7 r7 _read_at7456_addr_data: CLR SCLK DELAYS CLR nCS MOV A, R7 // address SETB ACC.7 // read mode MOV R7, #8 LOOP_RD1: RLC A MOV SDIN, C DELAYS SETB SCLK // at7456 在时钟的上升沿移入数据 DELAYS CLR SCLK DELAYS DJNZ R7, LOOP_RD1 DELAYS MOV R7, #8 // 读数据 LOOP_RD2: MOV C, SDOUT DELAYS SETB SCLK RLC A DELAYS CLR SCLK DELAYS DJNZ R7, LOOP_RD2 MOV R7, A // 返回值 DELAYS SETB nCS SETB SCLK SETB SDIN RET at7456 写8bit ;
功能:写1字节数据到 at7456 | ;
入口:dat --- 数据 | ;
出口:NONE | ;
影响资源:A,R7 | ;
void write_at7456_data(unsigned char dat) ;
r7 _write_at7456_data: CLR SCLK DELAYS CLR nCS MOV A, R7 // address MOV R7, #8 LOOP_WD: RLC A MOV SDIN, C DELAYS SETB SCLK // at7456 在时钟的上升沿移入数据 DELAYS CLR SCLK DELAYS DJNZ R7, LOOP_WD DELAYS SETB nCS SETB SCLK SETB SDIN RET at7456 读8bit ;
功能:从at7456 读取
1 字节数据 | ;
入口:NONE | ;
出口:dat --- 数据 | ;
影响资源:A,R7 | ;
unsigned char read_at7456_data(void) ;
r7 read_at7456_data: CLR SCLK DELAYS CLR nCS MOV R7, #8 // 读数据 LOOP_RD: MOV C, SDOUT SETB SCLK RLC A DELAYS CLR SCLK DELAYS DJNZ R7, LOOP_RD MOV R7, A // 返回值 DELAYS SETB nCS SETB SCLK SETB SDIN RET END 方便移植的 SPI 接口 C51 代码: // // AT7456(E) SPI 接口读写程序 --- AT7456_SPI.C // 杭州中科微电子有限公司 // 2016-12-22 // 0571-28918103 系统部 // //头文件 #include #include // AT7456(E)的SPI 控制接口 sbit nCS = P3 ^ 7;