首页天道酬勤硬件,stc8f2k08s2引脚图

硬件,stc8f2k08s2引脚图

张世龙 05-05 17:05 61次浏览

文章目录序言一,有可以使用的方法吗? 1 .利用硬件UART模拟SPI,实现9位数据传输2 .构建数字逻辑电路,人工发送两组实现9位SPI传输3.8位SPI2,具体操作1 .具体实现总结

前言这个时间很闲,所以决定自己做手表玩。 我们参考了开源项目和数据手册,决定学好和使用STM32F411CEU6。 屏幕选择了淘宝某商家的ST7789V大师的240*240分辨率的圆形tft屏幕。 利用商家给的软spi例程成功点亮屏幕后,尝试使用改为硬spi的方式,加速屏幕刷新,但在尝试了几种方案后,始终无法点亮。 之后,看了例行程序和ST7789V的数据手册后注意到了。 与常见屏幕不同,ST7789V使用9位spi格式,表示当前以第1位0和1发送的是命令还是数据。 STM32F411CE只能使用8位或16位SPI。 软件SPI的速度太慢了,所以开始了相关的研究,有了正文。 一、有可以使用的方法吗? 发现这个问题后,通过在网上查阅资料和与校长讨论,大致确定了以下三个方案。

1 .利用硬件UART模拟SPI实现9位数据传输的思路源在博客上连接如下: https://www.cn blogs.com/Libra 13179/p/7064321.html

博主利用UART的同步模式和SPI协议时序图非常相似的特点,实现了9位SPI数据的发送。 该方法可以通过调节波特率的方法实现SPI发射速度的调节。 配合DMA应该能得到理想的速度。

2 .构建数字逻辑电路,人为实现9位spi只发送名字,可能有点不理解其含义,下面做详细说明。 常见的屏幕采用5线spi的方案,简单来说,就是MOSI (数据线)、RES (清屏线)、CS (芯片选择信号线)、W/R (读/写控制线)、RS 后面的8位数据使用标准硬件SPI发送模式。 配合DMA的话,应该还是会得到好的效果。 关于数字逻辑电路,理论上应该可以通过一个与门来实现。

发送两组3.8位SPI的想法来源是在抓论坛时找到的。 9位SPI这个奇怪的协议也适应了这个问题,因为我相信屏幕驱动公司自己也知道MCU支持不多。 我们可以连续发送两组8位SPI数据,而CS不会中断。 后7位SPI数据无关。 前9位的SPI数据严格按照画面驱动集成电路的数据发送数据即可。 一般来说,该方法是本文讨论的三种方法中最简单的一种,不需要额外的硬件电路,也不需要占用其它外围设备进行仿真。 但是,缺点也很明显,16位数据种类中的7位数据是无用位,有约40%的性能浪费。

二、具体操作1 .具体实现在上面讨论了三种理论上可行的方案,但时间有限,这里测试最后一种方案,其他两种方案日后进行测试后再发文与大家交流。 不说话直接上代码

要将/** * @brief命令写入LCD * @param cmd ——,请发送* @ return none */voidwritecomm (unsigned chari )/spec page 46 (使用LCD_cs(0; com=i; com=com7; com1=(com0xff00 ) 8; com2=(com0x00ff; SPI _ write byte (com1,1 ); SPI _ write byte (com 2,1 ); LCD_cs(1; }/* * * @要将brief命令写入LCD * @param cmd ——,请发送* @ return none */void write data (unsigned chari ) { uint 16 _ t ddari uint8_t data1,data2; LCD_cs(0; data=i; data=data7; data |=0x8000; data1=(data0xff00 ) 8; DATA2=(data0x00ff ); SPI _ write byte (数据1,1 ); SPI _ write byte (数据2,1 ); LCD_cs(1; }代码部分其实比较简单,是利用c语言的位运算进行一些计算实现的。 我们应该发送的值存储在名为I的变量中并传递给函数,但I在uchar中只有8位,所以必须首先将I分配给16位的data/com变量。 接着,将data/com向左移位7位,空出低位7位的无用的数据位。 然后,如果要指示发送的8位是代表数据,则必须将spi传输的第一位数据设置为1。 还有WriteData ()函数的data|=0x8000。 或者利用运算的方式,把第一位置1。

测试结果表明,该方法可结合硬件SPI实现对ST7789V 9位SPI的控制。 同时,由于F411的硬件SPI速度达到50M,存在40%的性能损失,但是可以被整体接收。 然而,通过示波器测量,SPI数据的传输速度快至约50M,但各组数据相互差异很大,各组数据的传输频率需要约400K。 这个问题的第一点是速度相对较慢,因为我没有使用DMA进行传输。 另外,我也没有使用SPI的16位传输模式进行传输。 同时,我现在因为有测试计划的可行性,所以在使用HAL库。

以上就是我今天要说的内容。 本文简要介绍了SY7789V 9位SPI可能的解决方案,并对其中之一进行了实验,效果基本满意。 为了面临同样问题的朋友,我想哪怕帮一点忙。

redis默认删除策略,redis存储