2501|2

565

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【AT-START-F425测评】+软硬件SPI驱动(ST7735)1.8吋TFT LCD [复制链接]

 

1、硬件连接
GND         GND
3.3V         VCC  
PA5          SCL
PA7         SDA
PB0         ERS(复位)
PB1         DC(命令数据选择)
PA4         CS(片选)      
PB2         BL(背光)   


2、字库取摸方式
取模方式:阴码、逆向、列行式
使用PCtoLCD2002软件取摸。

 

3、图片取摸
水平扫描,16位真彩色  
使用Image2Lcd取摸

 4、代码实现
(1)IO以及SPI初始化
代码兼容软件SPI和硬件SPI两种方式,通过宏SOFTWARE_SPI_ENABLE选择。

void LcdIoInit(void)
{

        gpio_init_type gpio_init_struct;

        /* enable the led clock */
        crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);
        crm_periph_clock_enable(CRM_GPIOB_PERIPH_CLOCK, TRUE);


        /* set default parameter */
        gpio_default_para_init(&gpio_init_struct);



#if SOFTWARE_SPI_ENABLE        

        /* configure the led gpio */

        gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
        gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;
        gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;
        gpio_init_struct.gpio_pins = GPIO_PINS_4|GPIO_PINS_5|GPIO_PINS_7;
        gpio_init_struct.gpio_pull = GPIO_PULL_NONE;
        gpio_init(GPIOA, &gpio_init_struct);

        gpio_bits_set(GPIOA,GPIO_PINS_4|GPIO_PINS_5|GPIO_PINS_7);
#else        

        /*SPI1 :  

                PA4/CS  

                PA5/SCK    

                PA6/MISO   

                PA7/MOSI    

        */

       
        gpio_init_struct.gpio_out_type       = GPIO_OUTPUT_PUSH_PULL;
        gpio_init_struct.gpio_pull           = GPIO_PULL_UP;
        gpio_init_struct.gpio_mode           = GPIO_MODE_OUTPUT;
        gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
        gpio_init_struct.gpio_pins = GPIO_PINS_4;
        gpio_init(GPIOA, &gpio_init_struct);
        
        gpio_bits_set(GPIOA,GPIO_PINS_4);

        gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE5, GPIO_MUX_0);
        gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE6, GPIO_MUX_0);
        gpio_pin_mux_config(GPIOA, GPIO_PINS_SOURCE7, GPIO_MUX_0);

        gpio_default_para_init(&gpio_init_struct);
        gpio_init_struct.gpio_out_type       = GPIO_OUTPUT_PUSH_PULL;
        gpio_init_struct.gpio_pull           = GPIO_PULL_DOWN;
        gpio_init_struct.gpio_mode           = GPIO_MODE_MUX;
        gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
        gpio_init_struct.gpio_pins = GPIO_PINS_5;
        gpio_init(GPIOA, &gpio_init_struct);


        gpio_init_struct.gpio_out_type       = GPIO_OUTPUT_PUSH_PULL;
        gpio_init_struct.gpio_pull           = GPIO_PULL_UP;
        gpio_init_struct.gpio_mode           = GPIO_MODE_MUX;
        gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
        gpio_init_struct.gpio_pins = GPIO_PINS_6;
        gpio_init(GPIOA, &gpio_init_struct);


        gpio_init_struct.gpio_out_type       = GPIO_OUTPUT_PUSH_PULL;
        gpio_init_struct.gpio_pull           = GPIO_PULL_UP;
        gpio_init_struct.gpio_mode           = GPIO_MODE_MUX;

        gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;

        gpio_init_struct.gpio_pins = GPIO_PINS_7;

        gpio_init(GPIOA, &gpio_init_struct);

        

        

        spi_init_type spi_init_struct;



        crm_periph_clock_enable(CRM_SPI1_PERIPH_CLOCK, TRUE);

  

        spi_default_para_init(&spi_init_struct);

        spi_init_struct.transmission_mode = SPI_TRANSMIT_HALF_DUPLEX_TX;

        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_CLOCK_POLARITY_HIGH

        spi_init_struct.clock_phase = SPI_CLOCK_PHASE_2EDGE;       //SPI_CLOCK_PHASE_2EDGE

        spi_init_struct.cs_mode_selection = SPI_CS_SOFTWARE_MODE;

        spi_init(SPI1, &spi_init_struct);



        spi_enable(SPI1, TRUE);

        

#endif        

        

        gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;

        gpio_init_struct.gpio_out_type  = GPIO_OUTPUT_PUSH_PULL;

        gpio_init_struct.gpio_mode = GPIO_MODE_OUTPUT;

        gpio_init_struct.gpio_pins = GPIO_PINS_0|GPIO_PINS_1|GPIO_PINS_2;

        gpio_init_struct.gpio_pull = GPIO_PULL_NONE;

        gpio_init(GPIOB, &gpio_init_struct);

        

        gpio_bits_set(GPIOB,GPIO_PINS_0|GPIO_PINS_1|GPIO_PINS_2);

}

(2)SPI写数据

void LCD_Writ_Bus(u8 dat) 
{        
        LCD_CS_LOW();

#if SOFTWARE_SPI_ENABLE        

        
        u8 i;
        for(i=0;i<8;i++)
        {                          
                LCD_SCLK_LOW();
                if(dat&0x80)
                {
                   LCD_MOSI_HIGH();
                }
                else
                {
                   LCD_MOSI_LOW();
                }
                LCD_SCLK_HIGH();
                dat<<=1;
        }
#else

    spi_i2s_data_transmit(SPI1, dat);

    while(spi_i2s_flag_get(SPI1, SPI_I2S_TDBE_FLAG) == RESET) {};
#endif        
        LCD_CS_HIGH();        
}

(3)测试代码

void LcdTest(void)
{

        LcdInit();//LCD初始化
        LcdFill(0,0,LCD_W,LCD_H,BLACK);

        LcdShow16x16Hz(40, 0, 4, YELLOW, BLACK);
        LcdShow16x16Hz(56, 0, 5, YELLOW, BLACK);
        LcdShow16x16Hz(72, 0, 6, YELLOW, BLACK);

        LcdShowString(32,24,"AT32F425",BLUE, BLACK,16);
        LcdShowImage (14,60, 100, 93, gImage_zan);
}

5、现象

 

 

 

 

 

最新回复

这个彩屏不错,屏幕显示应该有相应的库吧?     详情 回复 发表于 2022-5-23 18:52
点赞 关注
个人签名stm32/LoRa物联网:304350312
 
 

回复
举报

7311

帖子

2

TA的资源

版主

沙发
 

这个彩屏不错,屏幕显示应该有相应的库吧?

 

点评

spi部分与具体的mcu有关,其他初始化流程之类的,参考厂家的就行  详情 回复 发表于 2022-5-23 19:01
 
 
 

回复

565

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
wangerxian 发表于 2022-5-23 18:52 这个彩屏不错,屏幕显示应该有相应的库吧?  

spi部分与具体的mcu有关,其他初始化流程之类的,参考厂家的就行

个人签名stm32/LoRa物联网:304350312
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表