问题

上一个项目在用寄存器操作STM32F0芯片的SPI_DR寄存器的时候,发现一个问题:

我给DR寄存器赋值一个uint8_t一字节大小的数据,SPI引脚能正确输出数据和时钟,但前面八位正确的数据输出完成后,时钟CLK没有停下来,又紧接着输出了八个时钟脉冲

也就是原数据0xfe 变成了十六位的 0xfe00 , 导致时序错误,使用逻辑分析才得以检查出来

为什么

去国外的st论坛转了一圈,发现有几个老外也是遇到了相同的问题,但他们是使用正确的固件库函数解决的,这并不是我想要找到的寄存器解决方法

后来又认真阅读了一次F030的数据手册,又仔细看了很久的HAL库底层代码,终于找到了问题所在:

如果你要spi输出一个字节八个时钟的数据,应该只操作SPI_DR寄存器的低八位,什么意思呢?

DR寄存器是16位的,如果你直接SPI1->DR = 0x85 ; 这样的操作是不正确的,你的数据会变成0x0085之后赋值给DR寄存器,也就是操作了16位,所以STM32会输出16个时钟脉冲

怎么办

那么看看我是怎么改的:

1 void SPI_WriteByte(uint8_t BYTE)
2 {
3     //

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

  1. 网络收发数据中涉及的黏包问题及解决办法

    一.什么是黏包: 粘包指的是数据和数据之间没有明确的分界线,导致不能正确读取数据 应用程序无法直接操作硬件,应用程序想要发送数据则必须将数据交给操作系统,而操作系统需要同时为所有应用程序提供数据传输服 ...

  2. 三菱FX系列PLC电池电压低导致程序参数丢失,PROG.E报警灯闪烁的解决办法

    三菱FX系列PLC电池电压低导致程序参数丢失,PROG.E报警灯闪烁的解决办法 由于长时间断电,重新开机后,操作人员反映设备无法启动,查看PLC面板报警如下图所示: 此时电源灯POWER正常: 运行灯 ...

  3. 雷塞SMC304系列控制器VC6.0例程在VS2015下编译遇到的若干问题及解决办法

    雷塞SMC304系列控制器VC6.0例程在VS2015下编译遇到的若干问题及解决办法 标签(空格分隔): 雷塞 SM304 WIN10 VS2015 最近由于导师要求,负责喷涂机器人的控制部分,接触到 ...

  4. 部分ABAQUS版本数据无法正常输出到Excel的一种解决办法

    ABAQUS学习笔记-部分ABAQUS版本数据无法正常输出到Excel的一种解决办法 ABAQUS输出的数据主要分为场输出与历史输出两种方式(根据空间与时间域区分),用户可以根据需要在Step中设置不 ...

  5. vue+cesium cesium数据量太大导致浏览器卡顿解决办法

    vue+cesium cesium数据量太大 导致浏览器卡顿 解决办法 解决方案 : 不要把任何的cesium对象 放在data中监听,因为在data中的变量 , vue会劫持数据 , 导致迟缓. 解 ...

  6. spi通信c语言发送32字节数据,AVR单片机SPI通讯实例程序 (C - ARM - 电子发烧友网

    AVR单片机SPI通讯实例程序 (C语言源代码) 一个SPI的实例,通过SPI实现两机通讯, 采用中断方式实现双全工通讯. 本例用两MEGA8515实现,连接为: MISO----MISO MOSI- ...

  7. c语言spi发送12位数据,【51单片机】普通I/O口模拟SPI口C语言程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 89C51系列单片机都不带SPI口,所在在这种情况下,我们可以模拟SPI口来现实我们要的功能,程序如下: //---------------------- ...

  8. 海思3516系列芯片SPI速率慢问题深入分析与优化(基于PL022 SPI 控制器)

    目录 前言: 第一部分: 第二部分: 第三部分: 第四部分: 前言: 我在某个海思主控的项目中需要使用SPI接口来驱动一块液晶屏,液晶屏主控为 st7789,分辨率 240x240,图像格式 RGB5 ...

  9. oracle 关联出现重复数据,ORACLE 分页查询出现重复记录的解决办法

    今天在用Oracle分页查询数据的时候出现了重复数据,有的数据无法查出,很郁闷,想了想,找了资料,发现问题 分页语句: select * from ( select row_.*, rownum ro ...

最新文章

  1. 服务器响应的生成:HTTP响应报头——HttpServletResponse接口的应用
  2. 2012 iis php mysql_Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建wordpress博客教程
  3. 用x64汇编优化8位S盒置换(三)
  4. hive 提交不到yarn_在Linux将MapReduce程序提交给YARN执行
  5. Android中的ImageView的getDrawableCache获取背景图片的时候注意的问题
  6. LeetCode-73. Set Matrix Zeroes
  7. 创建bootstrap项目_使用Bootstrap创建第一个网页
  8. NIHCC发布迄今世界最大的CT医学影像数据集(附下载)
  9. Xshell和Xftp5配置连接阿里云服务器
  10. MySQL聚集索引详解_MySQL innodb 聚集索引的概念与使用教程
  11. 建造者模式Builder
  12. scala Option类入门解析
  13. AutoJs 4.1.1 实战教程
  14. JSON Editor Online
  15. 学习Java必看的Java书籍(本本经典实用)
  16. 浅谈俄式硬核游戏《逃离塔科夫》:却让人沉浸其中
  17. javaweb超市商品库存信息管理系统报告
  18. html制作简历供人填写,求职简历制作个人定制代写
  19. 累计亏31亿的尚德机构:研发费用递减,多次被罚,市值缩水近九成
  20. vbnet 直线 弧形在autoCad中的画法

热门文章

  1. dblink 怎么用
  2. python搭建PyDev详细版
  3. android 滚动手势动画
  4. python+appium自动化测试获取短信+图片验证码
  5. java wate_Water.java
  6. drill apache_Apache Spark与Apache Drill
  7. Android Room之数据库加密
  8. 难处理的js单引号与双引号问题解决
  9. 中外企业文化杂志中外企业文化杂志社中外企业文化编辑部2022年第5期目录
  10. 无线wifi丢包的解决办法