LMK04828 SPI时序控制

时间:2024-04-03 15:05:42

查看LMK04828芯片手册,获取lmk04828芯片spi时序及相关寄存器设置
https://pdf1.alldatasheet.com/datasheet-pdf/view/932720/TI1/LMK04828.html

lmk04828芯片的寄存器配置可下载TI相关配置软件TICS PRO进行模拟配置
https://www.ti.com.cn/tool/cn/TICSPRO-SW

芯片手册研读:

在LMK04828芯片手册中可以看到spi时序的建立保持时间的要求。
LMK04828 SPI时序控制

1.该芯片spi读写时序均为上升沿有效。
2.该芯片spi配置速率最大为20M。
LMK04828 SPI时序控制
配置数据组成:

配置数据共24位,[23]为读写位,控制此次操作读写使用,0为写,1为读。[22:21] 为W1和W0使用,此两位为保留位,无实际作用,直接写0即可。[20:8]为地址位,用于写入此次操作寄存器的地址。[7:0]为数据位,用于写入对当前寄存器的控制值。

配置过程:

为满足数据的建立保持时间,待发送数据在前一个时钟周期的下降沿放到sdio总线上,在下一个时钟上升沿将数据捕获。
该spi为三线,需要控制sdio总线的读写方向。

sdio为inout类型,可以例化原语进行该引脚的方向控制,也可以使用assign进行定义,不过推荐使用原语。

IOBUF #(
.DRIVE (12 ), // Specify the output drive strength
.IBUF_LOW_PWR(“TRUE” ), // Low Power - “TRUE”, High Perforrmance = “FALSE”
.IOSTANDARD (“DEFAULT”), // Specify the I/O standard
.SLEW (“SLOW” ) // Specify the output slew rate
) IOBUF_inst (
.O (lmk04828_sdin ), // Buffer output
.IO(lmk04828_sdio ), // Buffer inout port (connect directly to top-level port)
.I (lmk04828_sdout), // Buffer input
.T (wn_r ) // 3-state enable input, high=input, low=output
);

写操作:
CS拉低表示操作起始,在检测到CS拉低后第一个时钟的上升沿写入读写控制位,之后依次写入W1,W0,ADDR[12:0],DATA[7:0],在最后一个时钟上升沿写入DATA[0],然后时钟保持高电平状态,CS拉高完成一次写入操作。
读操作:
CS拉低表示操作起始,在检测到CS拉低后第一个时钟的上升沿写入读写控制位,之后依次写入W1,W0,ADDR[12:0],在ADDR[0]写入后的下降沿将sdio读写方向为读,然后下一个时钟上升沿读回数据。
在最后一个时钟上升沿读回DATA[0],然后时钟保持高电平状态,CS拉高完成一次读操作。

仿真结果如下:

LMK04828 SPI时序控制