STM32的SPI2操作Flash
关于STM32F107的SPI标志 SPI_I2S_FLAG_BSY和SPI_I2S_FLAG_TXE的疑问 http://www.openedv.com/posts/list/23579.htm
用STM32 SPI1驱动DAC7611,在发送数据的时候用了while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);等待发送缓冲区为空后再拉高CS。结果发现在数据(16位)没有发送完时,就执行了CS拉高。然后我换了这个语句while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == SET);就正确了。我想知道,STM32如何判断发送缓冲区为空的?这两个标识位的判断有什么区别?
while(SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) != RESET); //等待发送完成
while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_BSY)==SET);
只发送过程(BIDIMODE=0并且RXONLY=0)
在此模式下,传输过程可以简要说明如下,使用BSY位等待传输的结束(见图215
466/754
和图216):
1. 设置SPE位为’1’,使能SPI模块;
2. 在SPI_DR寄存器中写入第一个要发送的数据,这个操作会清除TXE标志;
3. 等待TXE=1,然后写入第二个要发送的数据。重复这个操作,发送后续的数据;
4. 写入最后一个数据到SPI_DR寄存器之后,等待TXE=1;然后等待BSY=0,这表示最后一个数据的传输已经完成。
也可以在响应TXE标志的上升沿产生的中断的处理程序中实现这个过程。
注: 1. 对于不连续的传输,在写入SPI_DR寄存器的操作与设置BSY位之间有2个APB时钟周期的延迟,因此在只发送模式下,写入最后一个数据后,最好先等待TXE=1,然后再等待BSY=0。
2. 只发送模式下,在传输2个数据之后,由于不会读出接收到的数据,SPI_SR寄存器中的OVR位会变为’1’。(译注:软件不必理会这个OVR标志位)
是配置的时候有点问题,
SPI_InitTypeDef SPI_InitStructure;
SPI_Init(SPI2, &SPI_InitStructure);
和
SPI_InitTypeDef *SPI_InitStructure;
SPI_Init(SPI2, SPI_InitStructure);
两种方式的不同,大家有兴趣的可以试一下,其中一种方式是不行的(至少针对某些固态库是不行
STM32分别基于库和寄存器的硬件SPI2例程,适合入门者!http://www.amobbs.com/thread-5467320-1-1.html
http://bbs.21ic.com/icview-157057-1-1.html stm32的奇怪SPI2问题?
http://group.ednchina.com/GROUP_MES_14262_619_13966.HTM
http://bbs.csdn.net/topics/390652078?page=1
STM32的SPI2操作Flash的更多相关文章
- STM32F10X SPI操作flash MX25L64读写数据(转)
源:STM32F10X SPI操作flash MX25L64读写数据 前一段时间在弄SPI,之前没接触过嵌入式外围应用,就是单片机也只接触过串口通信,且也是在学校的时候了.从离开手机硬件测试岗位后,自 ...
- SPI操作flash MX25L64读写数据
STM32F10X SPI操作flash MX25L64读写数据 简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信.ARM主控芯片STM32F103,flash芯片 ...
- C#操作Flash动画
对于在C#开发的过程中没有接触过Flash相关开发的人员来说,没有系统的资料进行学习,那么这篇文档针对于初学者来说是很好的学习DEMO. 本文章中的DEMO实现了C#的COM控件库中本来就带有对fla ...
- STM32串口寄存器操作(转)
源:STM32串口寄存器操作 //USART.C /************************************************************************** ...
- selenium自动化过程中如何操作Flash动画
最近在看python的爬虫框架(scrapy),一个词概括就是:"酸爽"!等把selenium自动化版块讲完后,打算写一写关于scrapy相关的知识,打算从源码角度解析下scrap ...
- Selenium+Java - 结合sikuliX操作Flash网页
前言 前天被一个Flash的轮播图,给玩坏了,无法操作,后来请教了下crazy总拿到思路,今天实践了下,果然可以了,非常感谢! 模拟场景 打开百度地图 切换城市到北京 使用测距工具 测量 奥林匹克森林 ...
- STM32:片上Flash 操作
之前IAP时候记录过一些,今天对特定地方写又加深了印象,写与擦除都需要先unclock //读取指定地址的半字(16位数据) //faddr:读地址(此地址必须为2的倍数!!) //返回值:对应数据. ...
- STM32位带操作
STM32的位带操作是基于cortex内核自带的,而不是st公司独创.基本的思路就是用一个32位的地址空间访问一个bit,因为stm32只支持32位数据的读取,不像51单片机一样,是可以单独对一位操作 ...
- STM32硬件IIC操作
Stm32具有IIC接口,接口有以下主要特性 多主机功能:该模块既可做主设备也可做从设备 主设备功能 C地址检测 位/10位地址和广播呼叫 支持不同的通讯速度 状态标志: 发送器/接收器模式标志 字节 ...
随机推荐
- 点击图片或者鼠标放上hover .图片变大. 1)可以使用css中的transition, transform 2) 预先设置一个 弹出div. 3)弹出层 alert ; 4) 浏览器的宽度document.documentElement.clientWidth || document.body.clientWidth
变大: 方法一: 利用css属性. 鼠标放上 hover放大几倍. .kecheng_02_cell_content img { /*width: 100px; height: 133px;*/ wi ...
- phpstorm使用zen coding 快速编辑补全html/css代码
百科定义: 使用仿CSS选择器的语法来快速开发HTML和CSS ——由Sergey Chikuyonok开发. Zen Coding由两个核心组件组成:一个缩写扩展器(缩写为像CSS一样的选择器)和上 ...
- 爬取贴吧中的html,并保存到相对应的文件夹中
功能:输入要爬取的贴吧名称,起始页和终止页即可. # -*- coding: utf-8 -*- import urllib.request import urllib.parse import os ...
- Django框架的使用
1.创建项目: 语法:django-admin startproject 项目名称 2.Django的项目结构介绍 1.manage.py 功能:包含执行django中的各项操作的指令,不太清楚可以使 ...
- animate.css动画
添加类名的时间不要只添加动画的类名,也要加上animated,使用的时间可以把自己需要的效果复制出来
- day 017面向对象-反射
主要内容: isinstance, type, issubclass( 内置函数) 区分函数和方法 反射 一 ( isinstance, type, issubclass) isinstance ...
- HDU 1000
A + B Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- OS模块(与操作系统交互)
os 模块提供了很多允许你的程序与操作系统直接交互的功能 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir() ...
- springboot配置文件启动顺序
[1]项目内部配置文件 spring boot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件 1.–f ...
- ios 上浏览器返回上一页不会刷新页面问题,页面初始化的方法不执行
https://blog.csdn.net/yang450712123/article/details/79276102 https://blog.csdn.net/Chengbin_Huang/ar ...