编辑: 过于眷恋 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;

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题