119
个编辑
更改
lcd代码说明
==== 代码分析 ====
开发者打开谷雨物联提供的peripheral_ghostyu文件夹中07_tft_spi_example工程(IAR工程)。
在IAR的Workspace中点开Application,双击main.c文件,打开main.c。
'''LCD驱动部分代码说明,在此不会进行说明。开发者可以查看《谷雨显示接口原理说明》,里面详细介绍了屏幕驱动部分。'''<syntaxhighlight lang="c" line="1">
//******************************************************************************
// fn :main
//
// brief : 主程序入口
//
// param : none
//
// return : none
int main(void)
{
LED_Init(); //LED 初始化
bsp_board_lcd_init();
GUI_Init();
for(uint8_t i = 0;;)
{
GUI_SetBkColor(color[i%3]);
GUI_Clear();
GUI_DispStringAt("SPI lcd Test\r\n",0,0);
LED_Toggle(i++%3);
nrf_delay_ms(500);
}
}
</syntaxhighlight>在main函数中,bsp_board_lcd_init函数用于初始化SPI外设。在此例子中没有使用EasyDMA模式,而使用普通的SPI模式,具本的宏定义配置在SDK_CONFIG.H中。bsp_board_lcd_init函数中,配置SCK,MOSI,SS引脚,时钟频率,及SPI工作模式,字节方向等。NRF_DRV_SPI_DEFAULT_CONFIG是一个宏,定义了nrf_drv_spi_config_t的结构数据。<syntaxhighlight lang="c" line="1">
//******************************************************************************
// fn : bsp_board_lcd_init
//
// brife : init lcd hardware.ex spi, gpio
//
// param : opt -> 0 OR 1
//
// return : none
void bsp_board_lcd_init(void)
{
nrf_drv_spi_config_t spi_config = NRF_DRV_SPI_DEFAULT_CONFIG;
spi_config.ss_pin = LCD_SPI_SS_PIN;
//spi_config.miso_pin = SPI_MISO_PIN; //NOT USED
spi_config.mosi_pin = LCD_SPI_MOSI_PIN;
spi_config.sck_pin = LCD_SPI_SCK_PIN;
spi_config.frequency = NRF_DRV_SPI_FREQ_8M;
//block mode
nrf_drv_spi_init(&spi, &spi_config, NULL, NULL);
//Config the bl and mode pin to output
nrf_gpio_cfg_output(LCD_BL_PIN);
nrf_gpio_cfg_output(LCD_MODE_PIN);
}
</syntaxhighlight>NRF_DRV_SPI_DEFAULT_CONFIG宏定义内容。<syntaxhighlight lang="c" line="1">
#define NRF_DRV_SPI_DEFAULT_CONFIG \
{ \
.sck_pin = NRF_DRV_SPI_PIN_NOT_USED, \
.mosi_pin = NRF_DRV_SPI_PIN_NOT_USED, \
.miso_pin = NRF_DRV_SPI_PIN_NOT_USED, \
.ss_pin = NRF_DRV_SPI_PIN_NOT_USED, \
.irq_priority = SPI_DEFAULT_CONFIG_IRQ_PRIORITY, \
.orc = 0xFF, \
.frequency = NRF_DRV_SPI_FREQ_4M, \
.mode = NRF_DRV_SPI_MODE_0, \
.bit_order = NRF_DRV_SPI_BIT_ORDER_MSB_FIRST, \
}
</syntaxhighlight>
==== 实验现象 ====