stm32的spi应用之lcd

stm32的spi应用之lcd

ID:37010003

大小:194.51 KB

页数:7页

时间:2019-05-12

stm32的spi应用之lcd_第1页
stm32的spi应用之lcd_第2页
stm32的spi应用之lcd_第3页
stm32的spi应用之lcd_第4页
stm32的spi应用之lcd_第5页
资源描述:

《stm32的spi应用之lcd》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、STM32的SPI应用之LCD开始本来先玩串口,虽然程序已经跑通,但是由于网上类似文章很多,就先来个SPI玩玩,与上次GPIO一样,技术含量仍然不高,仅是业余学习玩玩。1、首先来开硬件电路,个人觉得是编写程序的第2步;第1步当然是先看STM32的手册了,SPI的详细介绍见STM32的中文使用手册。这个电路的正确性是以我把它点亮为依据的,不是我设计的,我也不会,但是我驱动它关心的是那几个信号引脚怎么接的。这里采用的是SPI口,加上几根控制线。关于SPI口的介绍不大清楚的朋友可以查下相关资料,一般具有SPI接口的处

2、理器的手册都有比较详细的介绍。结合STM32的手册对引脚的描述:可以看出,SPI1的4根引脚MISO、MOSI、SCK(CLK)、CSN(CS)分别对应的引脚为GPIO的:PA6、PA7、PA5、PA4。所以LCD的控制线与处理器的GPIO具体对应如下:LCD_RST--------------PC7LCD_RS------------------PC8LCD_CLK-----------------------PA5LCD_SDO-----------------------PA7LCD_CS--------

3、--------------PA8LCD_PWR----------------PC1其实也就这六根信号线就能驱动LCD了。2、这里必须关心的是SPI口对应的4根线,这里只用到了两根MOSI(PA7)、CLK(PA5),片选CSN用的是通用IO口PA8代替,至于MISO这里可以不用使用。所以在初始化SPI口是有如下程序:voidSetupSPI(void){SPI_InitTypeDefSPI_InitStructure;GPIO_InitTypeDefGPIO_InitStructure;/*允许SPI1和G

4、PIOA时钟,这两个外设都是挂在APB2总线上的*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1

5、RCC_APB2Periph_GPIOA,ENABLE);/*配置SPI1引脚,由于这里只用到了SCK,和MOSI,所以只对PA5和PA7进行了初始化*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5

6、GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStruct

7、ure.GPIO_Mode=GPIO_Mode_AF_PP;//关于这个参数的描述可以见GPIO的H文件GPIO_Init(GPIOA,&GPIO_InitStructure);/*配置PA.4作为推挽输出,因为这里用来作为SPI口的片选,既选中LCD操作*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out

8、_PP;GPIO_Init(GPIOA,&GPIO_InitStructure);/*初始化片选为高,不选种LCD*/GPIO_ResetBits(GPIOA,GPIO_Pin_8);//PA8;/*SPI1配置,关于这个怎么配置见STM32的手册,为什么这样配置见下*/SPI_InitStructure.SPI_Direction=SPI_Direction_1Line_Tx;SPI_InitStructure.SPI_Mode=SPI_Mode_Master;SPI_InitStructure.SPI_Da

9、taSize=SPI_DataSize_8b;SPI_InitStructure.SPI_CPOL=SPI_CPOL_High;SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge;SPI_InitStructure.SPI_NSS=SPI_NSS_Soft;SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_4;SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB;S

10、PI_Init(SPI1,&SPI_InitStructure);SPI_Cmd(SPI1,ENABLE);}关于SPI的配置,这里还要多说点。因为SPI的时序很重要,或者说只要是串口,对时序都有一些特定的要求。对于STM32的SPI口来说,时序是可以配置。先来看看STM32的SPI口时序图:可以看出,SPI口的时序主要控制在两个位:CPHA和CPOL,这个不用我多罗嗦,大家都知道两个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。