前言

使用的是RTThread 标准版,主控是STM32H743,SRAM是LY68L6400,使用QSPI

QSPI和SPI的区别

个人理解最大的区别就是SPI是串行,数据输出,而QSPI跟像并行输出,比如从单数据线的SPI到4数据线的QSPI。

LY68L6400

SRAM的QSPI的波形图,注意这个读取等待周期,十分重要。也是区别于SPI的地方

在KCONFIG中添加开启QSPI

 menuconfig BSP_USING_QSPIbool "Enable QSPI BUS"default nselect RT_USING_QSPIselect RT_USING_SPI

RTT中的QSPI的读取时 需要配置的一些参数

RTT中的QSPI的写入时 需要配置的一些参数,和读取不同的就是命令码,空闲等待周期是为0

void qspi_ly68_write(rt_uint32_t waddr,rt_uint8_t *wdata,rt_uint32_t size)
{struct rt_qspi_device *qspi_dev_ly68 = RT_NULL;struct rt_qspi_message message;rt_err_t result = RT_EOK;qspi_dev_ly68 = (struct rt_qspi_device *)rt_device_find(QSPI_DEVICE_NAME);if(qspi_dev_ly68 == RT_NULL){rt_kprintf("qspi sample run failed! can't find %s device!\n", QSPI_DEVICE_NAME);}else{message.parent.send_buf = wdata;message.parent.recv_buf = RT_NULL;message.parent.length = size;message.parent.next = RT_NULL;message.parent.cs_take = 1;message.parent.cs_release = 1;message.instruction.content = 0X38;message.instruction.qspi_lines = 1;message.address.content = waddr;message.address.size = 24;message.address.qspi_lines = 4;message.dummy_cycles = 0;message.qspi_data_lines = 4;result = rt_qspi_transfer_message(qspi_dev_ly68, &message);}
}void qspi_ly68_read(rt_uint32_t raddr,rt_uint32_t size)
{struct rt_qspi_device *qspi_dev_ly68 = RT_NULL;struct rt_qspi_message message;rt_err_t result = RT_EOK;rt_uint32_t i;qspi_dev_ly68 = (struct rt_qspi_device *)rt_device_find(QSPI_DEVICE_NAME);if(qspi_dev_ly68 == RT_NULL){rt_kprintf("qspi sample run failed! can't find %s device!\n", QSPI_DEVICE_NAME);}else{message.parent.send_buf = RT_NULL;message.parent.recv_buf = qrData;message.parent.length = size;message.parent.next = RT_NULL;message.parent.cs_take = 1;message.parent.cs_release = 1;message.instruction.content = 0XEB;message.instruction.qspi_lines = 1;message.address.content = raddr;message.address.size = 24;message.address.qspi_lines = 4;message.dummy_cycles = 6;message.qspi_data_lines = 4;rt_qspi_transfer_message(qspi_dev_ly68, &message);}
}

一些问题

使用QSPId DMA 的话会遇到一个问题,就是drv_qspi.c中的DMA写的不对
具体如下图,在使用STM32H7的时,drv_qspi.c中的参数还是hdma,但是实际上H7的文件中定义的是hmdma,在其他系列还能用,在H7上要用DMA是需要修改的。

RT-Thread 基于QSPI驱动LY68L6400-SRAM相关推荐

  1. 基于rt thread smart构建EtherCAT主站

    我把源码开源到到了gitee,https://gitee.com/rathon/rt-thread-smart-soem 有兴趣的去可以下载下来跑一下 软件工程推荐用vscode 打开.rt thre ...

  2. xpt 2046的触摸屏 rt thread设备驱动框架

    1 基于rtt 开发触摸屏驱动 准备使用rtt 框架 , 驱动xpt 2046的触摸屏, 翻阅大量资料发现, 大部分文章强调的是时序图, 而且很多代码要么直接操作寄存器, 要么是io 口模拟, 只能用 ...

  3. 基于GD32F103C8T6添加RT Thread nano设备框架并添加串口设备(以控制台console( uart0 )为例)

    最近没事琢磨了一下使用设备框架的问题.因为将串口注册到设备框架可以应用十分丰富的软件包. 于是就整理了一下手上的工程,重新将工程梳理了一遍. 像这样是十分清爽了,其中RTOS是操作系统源代码 并且学习 ...

  4. RT Thread根据开发板制作BSP方法

    之前一直不懂怎么使用RT Thread的软件包,感谢网上的大神,看了你们的博客后大概了解一些,在此做下记录.用RT Thread软件包需要RT Thread的系统,但是RT Thread和RT Thr ...

  5. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-基于接口驱动的数据层...

    系列回顾 在前面的文章中,我用了大量的篇幅对UDA及ORM的使用进行了讲解和演示,我们已经知道并熟悉的使用UDA和ORM构建简单的应用,AgileEAS.NET在应用的纵向结构上建议使用分层结构,提出 ...

  6. 关于RT thread系统节拍时钟的配置

    关于RT thread系统节拍时钟的配置                  -----本文基于rt-thread-3.1.3版本编写 首先,使用RTthread OS时,要配置(或者明白)它的系统节拍 ...

  7. rt thread studio使用QBOOT和片外flash实现OTA升级

    我们这里要使用单片机外部flash作为OTA的下载分区,外部flash硬件连接关系 PB3-->SPI3_CLK PB4-->SPI3_MISO PB5-->SPI3_MOSI PE ...

  8. RT Thread利用STM32CUBEMX和RT Thread studio来创建模板工程

    (1)RT Thread利用STM32CUBEMX来创建模板工程 1.参考文档: 基于 CubeMX 移植 RT-Thread Nano:RT-Thread 文档中心 注意:串口2必须使能异步模式(启 ...

  9. rt thread系统下添加wiznet软件包后,不插网线CPU利用率100%问题

    rt thread系统下添加wiznet软件包后如果不插网线的话其他任务运行很卡,使用ps命令发现优先级低的任务很多都超时了 rt thread线程错误码 添加了一个可以查看CPU利用率的软件包CPU ...

最新文章

  1. 多个servlet配制方法
  2. 奇怪吸引子---Finance
  3. WEB高性能开发(10) - 疯狂的HTML压缩
  4. 《软件需求规格说明书》 ---学士之路
  5. Java 正青春:现状与技术趋势报告
  6. 我自己关于C语言,编译器,标准库,GUN glibc,CRT ,API之类的理解。
  7. 云服务器定时启动程序_过去、现在和未来:开发一款微信小程序的技术迭代全过程...
  8. opencv_图像反转
  9. 定时任务的选型及改造
  10. 947. 移除最多的同行或同列石头2021-01-23
  11. 机器人工程师学习计划(新工科自学方案)------杨硕
  12. 调查问卷题目设计注意事项
  13. 微信小程序开发者工具平台+Hbuilder开发平台下载
  14. android输入法ios下载安装,仿ios输入法
  15. MAC上报错“The JAVA_HOME environment variable is not defined correctly This environment
  16. 大话设计模式之爱你一万年:第十八章 行为模式:中介者模式:那些年的情书-邮局传情:1. 中介者模式基本概念
  17. matlab 收敛速度,BP网络的收敛速度和设计步骤【转】
  18. 深度解析UG二次开发装配的部件事件、部件原型和部件实例
  19. 小学计算机画线反思,会画画的线活动反思
  20. 如何确定复杂句中同位语的对应词(对应名词)?

热门文章

  1. 英狼 团队作业2--王者光耀
  2. java中的 %d %n \n %f
  3. 东北大学计算机专业研究生入学考试2000年真题
  4. Oracle锁信息查询
  5. 集中控制集中电源型消防应急照明和疏散指示系统 验收方法与标准
  6. 基于Face++使用python+opencv来实现人脸验证及人脸解锁
  7. 去除PDF文件的数字签名、密码
  8. 好用强大优秀的杀毒软件 ESET Internet Security
  9. 关于计算机软件系统的知识,一些关于计算机的常见知识
  10. WIN10 自动切换夜间模式