【雅特力AT-START-F435】SPI显示屏1.77inchTFT测试
[复制链接]
【雅特力AT-START-F435】SPI显示屏1.77inchTFT测试
一、SPI初始化
使用 SPI2 ,首先初始化GPIO,使用 PD0 作为软件片选按键,将PD4作为MOIS、PC1作为MISO(没有触摸,未使用到),PD1 作为SCLK的时钟信号线。
每组GPIO都设置为复用功能,强驱动能力,上下拉选择为上拉输出。
初始化GPIO之后最好先将 CS 引脚初始化为高电平
void GPIO_Config(void)
{
gpio_init_type gpio_initstructure;
crm_periph_clock_enable(CRM_GPIOE_PERIPH_CLOCK, TRUE);
crm_periph_clock_enable(CRM_GPIOG_PERIPH_CLOCK, TRUE);
/* software cs, pd0 as a general io to control flash cs */
gpio_initstructure.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;
gpio_initstructure.gpio_pull = GPIO_PULL_UP;
gpio_initstructure.gpio_mode = GPIO_MODE_OUTPUT;
gpio_initstructure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
gpio_initstructure.gpio_pins = SPIx_CS;
gpio_init(SPIx_CS_Port, &gpio_initstructure);
/* sck */
gpio_initstructure.gpio_pull = GPIO_PULL_UP;
gpio_initstructure.gpio_mode = GPIO_MODE_MUX;
gpio_initstructure.gpio_pins = SPIx_SCK;
gpio_init(SPIx_SCK_Port, &gpio_initstructure);
gpio_pin_mux_config(SPIx_SCK_Port, GPIO_PINS_SOURCE13, GPIO_MUX_4);
/* miso */
gpio_initstructure.gpio_pull = GPIO_PULL_UP;
gpio_initstructure.gpio_pins = SPIx_MISO;
gpio_init(SPIx_Data_Port, &gpio_initstructure);
gpio_pin_mux_config(SPIx_Data_Port, GPIO_PINS_SOURCE0, GPIO_MUX_5);
/* mosi */
gpio_initstructure.gpio_pull = GPIO_PULL_UP;
gpio_initstructure.gpio_pins = SPIx_MOSI;
gpio_init(SPIx_Data_Port, &gpio_initstructure);
gpio_pin_mux_config(SPIx_Data_Port, GPIO_PINS_SOURCE1, GPIO_MUX_5);
CS_HIGH;
}
初始化 SPI2 要将片选选择为软件选择模式,需要注意的是,该TFT屏幕的采样信号为下降沿采样,所以:
为了提高刷屏速率,将SPI的分频系数设置为2分频,SYS-Clock运行在72MHz,SPI速率为 72/2/8 = 4.5Mbyte/s。
选择为高位先行模式
void SPIx_Config(void)
{
spi_init_type spi_init_struct;
crm_periph_clock_enable(CRM_SPI2_PERIPH_CLOCK, TRUE);
spi_default_para_init(&spi_init_struct);
spi_init_struct.transmission_mode = SPI_TRANSMIT_FULL_DUPLEX;
spi_init_struct.master_slave_mode = SPI_MODE_MASTER;
spi_init_struct.mclk_freq_division = SPI_MCLK_DIV_2;
spi_init_struct.first_bit_transmission = SPI_FIRST_BIT_MSB;
spi_init_struct.frame_bit_num = SPI_FRAME_8BIT;
spi_init_struct.clock_polarity = SPI_CLOCK_POLARITY_HIGH;
spi_init_struct.clock_phase = SPI_CLOCK_PHASE_2EDGE;
spi_init_struct.cs_mode_selection = SPI_CS_SOFTWARE_MODE;
spi_init(SPIx, &spi_init_struct);
spi_enable(SPIx, TRUE);
}
二、编写通用TFT数据/命令传出接口函数
三、初始化LCD屏幕、移植画图函数
移植一下初始化的命令:
移植一下函数接口:
四、主函数中调用
屏幕大小限制为:
#define X_MAX_PIXEL 140
#define Y_MAX_PIXEL 170
|