软件模拟SPI速率问题记录
问题:
表现现象为第一个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速率问题记录相关推荐
- 硬件SPI与软件模拟SPI速率对比
1.前言 本文使用AT32F425驱动RC522来测试SPI1的速率,关于RC522的详细代码操作可查帖子[GD32L233C-START]硬件SPI1驱动RC522. 2.关于AT32F425的 ...
- 一文搞懂——软件模拟SPI
关于stm32通信协议:软件模拟SPI.软件模拟I2C的总结(fishing_8)_To_be_a_fisher的博客-CSDN博客_stm32 软件spi 发现一篇写的软件模拟SPI的比较容易理解的 ...
- 关于stm32通信协议:软件模拟SPI、软件模拟I2C的总结(fishing_8)
趁着帮老师代上嵌入式实验课的机会,又重新熟悉了一遍stm32的通信协议:串口协议.SPI协议.I2C协议.RS485协议.大概半年前,是过了一遍的,但也只停留于读了遍代码,跑了下例程,最近又过了一遍( ...
- 单片机软件模拟SPI接口—加深理解SPI总线协议
单片机软件模拟SPI接口-加深理解SPI总线协议 SPI(Serial Peripheral Interfacer 串行外设接口)是摩托罗拉公司推出的一种同步串行通讯接口,用于微处理器臌控制器和外 ...
- java如何编写spi接口_软件模拟SPI接口程序代码(4种模式)
软件模拟SPI接口程序代码(4种模式) SPI协议简介 SPI的通信原理很简单,一般主从方式工作,这种模式通常有一个主设备和一个或多个从设备,通常采用的是4根线,它们是MISO(数据输入,针对主机来说 ...
- 软件模拟SPI接口程序代码(4种模式)
软件模拟SPI接口程序代码(4种模式) SPI协议简介 SPI的通信原理很简单,一般主从方式工作,这种模式通常有一个主设备和一个或多个从设备,通常采用的是4根线,它们是MISO(数据输入,针对主机来说 ...
- 【STM32】0.96寸OLED显示屏(7针SPI协议)软件模拟SPI
Author:AXYZdong 自动化专业 工科男 有一点思考,有一点想法,有一点理性 [自制展示]2020鼠年大吉 文章目录 概述 3.1硬件设计 3.2软件设计 3.2.1编程要点 3.2.2代码 ...
- STM32F103软件模拟SPI接口驱动ILI9486液晶屏
STM32F103软件模拟SPI接口驱动ILI9486液晶屏 ILI9486的工作模式 ILI9486的SPI总线方式简介 ILI9486的3线SPI总线底层驱动配置步骤 ILI9486的工作模式 I ...
- 软件模拟SPI时序实现25Q64读写操作
软件模拟SPI时序实现25Q64读写操作 单片机采用SPI/IIC通讯协议访问外围电子模块如:显示屏.EEPROM.FLASH.各种电子传感器等等越来越多,掌握SPI/IIC通讯协议访问外设非常必要. ...
最新文章
- mysql数据库移植到另一台电脑,将mysql数据库从一台计算机复制到另一台计算机...
- Linux怎么让文件按大小排序,linuxsortlinux系统下,按文件的大小进行排序的命令...
- (剑指Offer)面试题18:树的子结构
- 20165301第十周课下补做
- 邮件服务器 文件服务器,搭建邮件、终端和文件服务器应用方案_服务器_服务器x86服务器-中关村在线...
- SparkSQL读取文件时,数据字段类型调整
- Keras(part1)--Keras简介与安装
- 阿里大数据中台12年建设经验的精华总结!一次性说清!
- excel vba 快速显示及隐藏所选数据行,并获取多重选择区地址的行列号
- Tricks(三十四)—— 判断某一属性列是数值型还是标称型
- 【建议收藏】货币交易信息爬取+筛选(Python附源码)
- 使用TIBCO Rendezvous发送hello world,实现监听和发送
- bzoj2109 航空管制
- mysql utc_MySQL的时区是否应该设置为UTC?
- 关于BIOS加载BOOT.S的经典解答
- python re.split 空格_str.split和re.split中空格的区别
- java aes 工具类_Java中的AES加解密工具类:AESUtils
- ⚡三十分钟⚡小白写了一个坦克大战无敌版(找素材又花了半个小时/尴尬)
- IaaS PaaS SaaS 读音及含义
- USB Camera摄像头 (UVC 与 gspca)
热门文章
- 全军职称计算机考试模块,今年全军职称计算机考试8月7日开考
- 如何用PLSQL连接服务器的Oracle数据库
- 继西洋棋大师、魔术方块之后 人工智能挑战迭迭乐游戏
- Android开发,关于模拟器通知显示正常,真机测试真机通知无效问题
- Python异常处理机制
- “const char *“ 类型的实参与 “LPCWSTR“ 类型的形参不兼容,VScode
- html+轮播图下标跳转代码,最简单的JavaScript图片轮播代码(两种方法)
- java arraymap_ArrayMap java.lang.ArrayIndexOutOfBoundsException
- python集合输出_Python之集合
- 三极管作为开关的学习