7. GUI 芯片模块
7.1 SPI 通信
GUI 芯片 SPI 连接
7.2 GUI 芯片指令
GUI 芯片指令
SPI Flash 读写
uint8_t spi_byte_write(uint8_t data) {
uint8_t brxbuff;
spi_i2s_data_transmit(SPI4, data);
while (spi_i2s_flag_get(SPI4, SPI_I2S_RDBF_FLAG) == RESET);
brxbuff = spi_i2s_data_receive(SPI4);
while (spi_i2s_flag_get(SPI4, SPI_I2S_BF_FLAG) != RESET);
return brxbuff;
}
void spiflash_read(uint8_t *pbuffer, uint32_t read_addr, uint32_t length) {
FLASH_CS_LOW();
spi_byte_write(0x03); // 普通读取指令
spi_byte_write((uint8_t)((read_addr) >> 16));
spi_byte_write((uint8_t)((read_addr) >> 8));
spi_byte_write((uint8_t)read_addr);
spi_bytes_read(pbuffer, length);
FLASH_CS_HIGH();
}
7.3 QSPI 通信(推荐)
推荐使用 QSPI 或 SFC 通信以获得更高数据传输速率,适合大屏高分辨率场景下的资源文件快速读取。
8. 字库驱动
从高通技术支持处获取字库静态库支持文件,实现外部声明函数:
unsigned char r_dat_bat(unsigned long address, unsigned short DataLen,
unsigned char *pBuff) {
spiflash_read(pBuff, address, DataLen);
return 1;
}
unsigned char gt_read_data(unsigned char* sendbuf, unsigned char sendlen,
unsigned char* receivebuf, unsigned int receivelen) {
unsigned int i;
FLASH_CS_LOW();
for (i = 0; i < sendlen; i++) spi_byte_write(sendbuf[i]);
for (i = 0; i < receivelen; i++) receivebuf[i] = spi_byte_read();
FLASH_CS_HIGH();
return 1;
}
在主函数中调用 GT_Font_Init(),返回值大于 0 表示字库初始化成功。之后可调用静态库中声明的函数接口调取不同点阵大小的字库数据。
int main(void) {
system_clock_config();
at32_board_init();
spiflash_init();
LCD_Init();
GT_Font_Init();
while (1);
}

