有一黑白LCD,有CS/SI/SCK三线,时序满足SPI时序,但STM32的SPI有四线NSS/MOSI/SCK/MISO,这里MISO没有用到。因此可以使用SPI的单线发送模式进行驱动LCD。

关键代码如下:

/* SPI_MASTER configuration -*/
SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;//这里使用单线发送模式
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_LSB;
SPI_Init(SPI1, &SPI_InitStructure); /* Enable SPI_MASTER */
SPI_Cmd(SPI1, ENABLE);

经试验发现,在单线模式下,只能使用SPI_I2S_FLAG_BSY标志来判断设备是否空闲,而不能使用SPI_I2S_FLAG_TXE发送完成标志。

SPI1->DR = byte;
while((SPI1->SR & SPI_I2S_FLAG_BSY) != RESET); //等待SPI忙完,这里不能使用SPI_I2S_FLAG_TXE发送完成标志,只能使用SPI_I2S_FLAG_BSY标志

记录在此,以防忘记。

stm32f103 SPI单线TX发数据来驱动LCD的更多相关文章

  1. STM32 SPI 发送第一个数据不成功问题

    STM32的标准库,跟HAL库都是很实用的, 在使用SPI库的过程中一定要注意时序的问题. 我在调试SPI过程中,调试了两个IC,都是用HAL库, 第一个IC没出问题,第二个IC出现了第一次发送数据不 ...

  2. STM32F0系列芯片SPI发送一字节数据却输出16个CLK时钟的解决办法

    问题 上一个项目在用寄存器操作STM32F0芯片的SPI_DR寄存器的时候,发现一个问题: 我给DR寄存器赋值一个uint8_t一字节大小的数据,SPI引脚能正确输出数据和时钟,但前面八位正确的数据输 ...

  3. android Fragment与Activity交互,互相发数据(附图具体解释)

    笔者最近看官方training.发现了非常多实用又好玩的知识. 当中.fragment与Activity通信就是一个. fragment与Activity通信主要是两点: 1.fragment传递信息 ...

  4. C socket udp方式发数据

    #define HOST_SERVER_IP "192.168.3.35" #define HOST_PORT 9501 #define SLEEP_TIME 1 #define ...

  5. TCP网络编程-----客户端请求连接服务器、向服务器发数据、从服务器接收数据、关闭连接

    SOCKET m_sockClient; unsigned short portNum; ------------------------------------------------------- ...

  6. Arduino 串口测试 电脑发数据接收后立马返回

    String comdata = ""; void setup() { Serial.begin(9600); while(Serial.read()>= 0){} //cl ...

  7. Python-实现socket简单地连续发数据

    只需用while条件判断来实现 服务器端 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import socket serv ...

  8. 简单案例:form表单应用向后端发数据

    效果如下图: 先新建一Django项目. 最后在terminal执行python manage.py runserver 8090 运行djago程序 浏览器输入http://127.0.0.1:80 ...

  9. LcdTools如何实现PX01读取SD中BIN文件并通过端口发出去

    在实际应用中我们会碰到需要下载很大容量固件,比如TP固件几百K大小BIN文件,这种情况下用LcdTools写初始化代码的方式实现就不大现实:此时我们可以通过PX01 SD来实现. 首先,把需要操作的B ...

随机推荐

  1. Shell | grep with n following lines

    'foo' sample.txt ➜ dex-method-counts git:(master) ./dex-method-counts ~/Downloads/n.apk | 'hui' hui: ...

  2. 点评App wiki-git标准实践

    fetch与pull fetch = pull + merge fetch -p,用于将清理工作同步到本地repository rebase-衍合 merge与rebase是合并的两种方法(上为mer ...

  3. RDD中cache和persist的区别

    通过观察RDD.scala源代码即可知道cache和persist的区别: def persist(newLevel: StorageLevel): this.type = { if (storage ...

  4. UVA 10245 - The Closest Pair Problem

    Problem JThe Closest Pair ProblemInput: standard inputOutput: standard outputTime Limit: 8 secondsMe ...

  5. Unity WebSocket(仅适用于WebGL平台)

    !!!转载注明:http://www.cnblogs.com/yinlong1991/p/unity_ylwebsocket.html Unity WebSocket 使用 1.下载 YLWebSoc ...

  6. C++调用WebService服务问题总结

    近期接手一部分C++研发工作,同时与.NET开发小组进行软件功能协作,于是需要调用.NET WebService服务,已完成数据的网络通讯业务功能:结束之余,将手头碰到的问题总结罗列如下: C++如何 ...

  7. [jPlayer] HTML5 Audio & Video for jQuery

    ---------------------------------------------------------------------------------------------------- ...

  8. Effective Modern C++翻译(1):序言

    /*********************************************************** 关于书: 书是我从网上找到的effective Modern C++的样章,内 ...

  9. Oracle 事务

    begin begin savepoint p1; DELETE FROM sys_re_xxx; //红色部分替换为需要一起执行的SQL即可 DELETE FROM SYS_xxxx; ...... ...

  10. tomcat 页面管理

    <role rolename="admin-gui"/> <role rolename="manager-gui"/> <user ...