问题:

表现现象为第一个SPI时钟慢于后边的时钟,第一个字节慢于后边的字节,波形:

代码如下:

//optimizations for speed
static uint8_t usr_spi_read_write(uint8_t data)
{uint8_t recv = 0;SPI_SCK_L;if(data & 0x80) SPI_MOSI_H;else SPI_MOSI_L;SPI_SCK_H;if(SPI_MISO) recv |= 0x80;……此处省略, ---0x40-0x02---SPI_SCK_L;if(data & 0x01) SPI_MOSI_H;else SPI_MOSI_L;SPI_SCK_H;if(SPI_MISO) recv |= 0x01;return recv;
}

调用:

分析可能原因:

mcu可能具有指令缓存功能,FLASH LATENCY配置为3,flash第一次调用时mcu需要从flash取指令,第二次执行时发现指令相同不再从flash取指,节约了flash取指时间,因此速度变快,再次调用时缓存已被其他指令覆盖,需要再次取指,造成每个第一次调用时间均加长。mcu从flash执行相同指令时速度可能更快

软件模拟SPI速率问题记录相关推荐

  1. 硬件SPI与软件模拟SPI速率对比

    ​ 1.前言 本文使用AT32F425驱动RC522来测试SPI1的速率,关于RC522的详细代码操作可查帖子[GD32L233C-START]硬件SPI1驱动RC522. 2.关于AT32F425的 ...

  2. 一文搞懂——软件模拟SPI

    关于stm32通信协议:软件模拟SPI.软件模拟I2C的总结(fishing_8)_To_be_a_fisher的博客-CSDN博客_stm32 软件spi 发现一篇写的软件模拟SPI的比较容易理解的 ...

  3. 关于stm32通信协议:软件模拟SPI、软件模拟I2C的总结(fishing_8)

    趁着帮老师代上嵌入式实验课的机会,又重新熟悉了一遍stm32的通信协议:串口协议.SPI协议.I2C协议.RS485协议.大概半年前,是过了一遍的,但也只停留于读了遍代码,跑了下例程,最近又过了一遍( ...

  4. 单片机软件模拟SPI接口—加深理解SPI总线协议

    单片机软件模拟SPI接口-加深理解SPI总线协议   SPI(Serial Peripheral Interfacer 串行外设接口)是摩托罗拉公司推出的一种同步串行通讯接口,用于微处理器臌控制器和外 ...

  5. java如何编写spi接口_软件模拟SPI接口程序代码(4种模式)

    软件模拟SPI接口程序代码(4种模式) SPI协议简介 SPI的通信原理很简单,一般主从方式工作,这种模式通常有一个主设备和一个或多个从设备,通常采用的是4根线,它们是MISO(数据输入,针对主机来说 ...

  6. 软件模拟SPI接口程序代码(4种模式)

    软件模拟SPI接口程序代码(4种模式) SPI协议简介 SPI的通信原理很简单,一般主从方式工作,这种模式通常有一个主设备和一个或多个从设备,通常采用的是4根线,它们是MISO(数据输入,针对主机来说 ...

  7. 【STM32】0.96寸OLED显示屏(7针SPI协议)软件模拟SPI

    Author:AXYZdong 自动化专业 工科男 有一点思考,有一点想法,有一点理性 [自制展示]2020鼠年大吉 文章目录 概述 3.1硬件设计 3.2软件设计 3.2.1编程要点 3.2.2代码 ...

  8. STM32F103软件模拟SPI接口驱动ILI9486液晶屏

    STM32F103软件模拟SPI接口驱动ILI9486液晶屏 ILI9486的工作模式 ILI9486的SPI总线方式简介 ILI9486的3线SPI总线底层驱动配置步骤 ILI9486的工作模式 I ...

  9. 软件模拟SPI时序实现25Q64读写操作

    软件模拟SPI时序实现25Q64读写操作 单片机采用SPI/IIC通讯协议访问外围电子模块如:显示屏.EEPROM.FLASH.各种电子传感器等等越来越多,掌握SPI/IIC通讯协议访问外设非常必要. ...

最新文章

  1. mysql数据库移植到另一台电脑,将mysql数据库从一台计算机复制到另一台计算机...
  2. Linux怎么让文件按大小排序,linuxsortlinux系统下,按文件的大小进行排序的命令...
  3. (剑指Offer)面试题18:树的子结构
  4. 20165301第十周课下补做
  5. 邮件服务器 文件服务器,搭建邮件、终端和文件服务器应用方案_服务器_服务器x86服务器-中关村在线...
  6. SparkSQL读取文件时,数据字段类型调整
  7. Keras(part1)--Keras简介与安装
  8. 阿里大数据中台12年建设经验的精华总结!一次性说清!
  9. excel vba 快速显示及隐藏所选数据行,并获取多重选择区地址的行列号
  10. Tricks(三十四)—— 判断某一属性列是数值型还是标称型
  11. 【建议收藏】货币交易信息爬取+筛选(Python附源码)
  12. 使用TIBCO Rendezvous发送hello world,实现监听和发送
  13. bzoj2109 航空管制
  14. mysql utc_MySQL的时区是否应该设置为UTC?
  15. 关于BIOS加载BOOT.S的经典解答
  16. python re.split 空格_str.split和re.split中空格的区别
  17. java aes 工具类_Java中的AES加解密工具类:AESUtils
  18. ⚡三十分钟⚡小白写了一个坦克大战无敌版(找素材又花了半个小时/尴尬)
  19. IaaS PaaS SaaS 读音及含义
  20. USB Camera摄像头 (UVC 与 gspca)

热门文章

  1. 全军职称计算机考试模块,今年全军职称计算机考试8月7日开考
  2. 如何用PLSQL连接服务器的Oracle数据库
  3. 继西洋棋大师、魔术方块之后 人工智能挑战迭迭乐游戏
  4. Android开发,关于模拟器通知显示正常,真机测试真机通知无效问题
  5. Python异常处理机制
  6. “const char *“ 类型的实参与 “LPCWSTR“ 类型的形参不兼容,VScode
  7. html+轮播图下标跳转代码,最简单的JavaScript图片轮播代码(两种方法)
  8. java arraymap_ArrayMap java.lang.ArrayIndexOutOfBoundsException
  9. python集合输出_Python之集合
  10. 三极管作为开关的学习