只能说跟51的差不了多少,在这里仅仅记录下主要注意事项吧。
1、I 2 C 通信分为标准模式 100kbit/s、快速模式 400kbit/s 和高速模式 3.4Mbit/s。因为所有的I 2 C 器件都支持标准模式,但却未必支持另外两种速度。
所以作为通用的 I 2 C 程序我们选择100k 这个速率来实现,也就是说实际程序产生的时序必须小于等于 100k 的时序参数,有特殊速度需求的器件再针对性写高速通信程序。
2、I 2 C 引脚属于开漏并联结构,并且 STM32 的 GPIO 端口引脚设置为开漏输出时,可以直接从输入数据寄存器获取 I/O 电平状态,因此将 I 2 C 引脚配置为开漏输出模式。
3、由于 I 2 C 总线空闲时默认为高,初始化时还需要设置引脚输出高电平,不过设置引脚输出高电平并不是在初始化之后,而应该放在初始化之前。
这是因为 STM32 在上电复位时 I/O 口为高阻状态,复位结束后,GPIO 端口引脚默认为浮空输入,由于上拉电阻的存在,I 2 C 引脚被拉高;
当程序执行到 I 2 C 初始化时又被配置为开漏输出模式,由于 GPIO 端口输出数据寄存器初始值默认全为 0,初始化后 I/O 口输出低电平,如果初始化之后再设置引脚输出高电平,势必会在I/O 口上产生一个低电平的毛刺。
如果在 I 2 C 引脚初始化之前先设置输出数据寄存器相应位为高,初始化 I 2 C 引脚后,I/O 口会直接输出高电平,避免毛刺信号。
4、实际上 I 2 C 的配置过程比较复杂,比如要充分考虑冲突和仲裁等处理方式,但是那些处理方式在绝大多数场合用不到。STM32F103 系列自带的 I 2 C 协议模块设计的过于复杂,对于实际应用来讲实用性不强,因此实际应用 I 2 C 时,还是用 IO 口直接模拟协议。
5、即在 SCK 的第一个时钟边沿还要早半个时钟周期时,SPI 主机就已经开始输出数据了,但是 SPI 从机却是在片选 SSEL 置低后开始输出数据,总之 SPI 设备输出数据要早于 SCK,这也是为什么 SPI 通信时要先使能片选。
6、SPI 和 I2C的对比
7、SPI接口
8、引脚连接
9、SPI外设
SP3需要注意的地方
NSS需要注意的地方
几个需要注意的地方(标黄的)
10、配置流程
11、SPI的发送接收与USART的对比
12、数据传送过程
发送完成的判断,需要注意
那么应该怎么判断呢?
假如在TXE = 0 的时候仍然向SPI_DR写入数据
13、霸气。。。
14、SPI查询方式接收和发送的注意点
上一篇:KST-STM32学习之W25Q128
下一篇:KST-STM32学习之USART
推荐阅读
史海拾趣
Fischer Elektronik深知每个客户的需求都是独特的,因此公司非常注重提供客户定制化的解决方案。公司拥有一支专业的研发团队和先进的生产设备,能够根据客户的具体需求,设计并生产出符合其要求的产品。这种高度定制化的服务模式,赢得了众多客户的信赖和好评,也为公司赢得了更多的市场份额。
Fischer Elektronik公司成立于1969年,是德国在高性能散热器和半导体制冷领域的领先制造商。成立之初,公司专注于研发和生产电子元器件的关键部件,如散热器和连接器,以满足当时快速增长的电子行业对高效散热解决方案的需求。凭借其精湛的工艺和严格的质量控制,Fischer Elektronik迅速在市场中站稳脚跟,并开始在仪器仪表、通讯/网络、交通/汽车和工业/自动化等领域展露头角。
在追求商业成功的同时,Codeco也积极履行企业社会责任。他们注重环保和可持续发展,在生产过程中采用环保材料和技术,减少对环境的影响。此外,Codeco还积极参与公益事业,为社会做出贡献。这些举措不仅提升了公司的社会形象,也赢得了员工和消费者的尊重与认可。
您可以根据这个框架,结合您对电子行业和Codeco Corporation Of Vermont的了解,撰写具体的故事内容。请注意,这些故事应基于事实或合理的推测,避免涉及未经证实的信息或夸大其词的描述。
在电子行业的早期,Deltrol Controls以其创新的电磁阀产品崭露头角。公司创始人认识到,随着自动化程度的提高,对精确控制流体流动的需求日益增加。于是,他们投入大量研发资源,成功开发出了具有高精度、高可靠性特点的电磁阀。这一创新产品迅速在电子行业获得认可,Deltrol Controls也借此机会逐步扩大了市场份额。
在电子制造行业日益重视环保和可持续发展的背景下,EAO公司积极响应号召,致力于研发和生产环保型电子产品。公司投入大量资源研发新型环保材料,优化生产工艺,减少生产过程中的废弃物排放。同时,EAO公司还建立了完善的电子垃圾回收体系,对废弃电子产品进行专业处理,确保资源得到合理利用,减少对环境的负面影响。
自1983年Futaba的VFD产品被福特汽车公司采用后,其在美国三大汽车厂的市场占有率迅速达到100%。这一成就不仅证明了Futaba VFD产品在汽车行业的卓越性能和广泛应用,还推动了其在全球汽车市场上的快速扩张。VFD的抗震性能、良好的温差适应性以及高可靠性,使其在汽车仪表盘和抬头显示器等关键部件中扮演了重要角色。随着新能源汽车的兴起,Futaba的VFD技术也进一步适应市场需求,为新能源汽车提供了更加先进的显示解决方案。
技术要求和商业需求正促使WiMAX无线网络技术快速升温。通信行业面临着进一步降低无线通信网络成本的巨大压力,而实现这一点的一个可能方法就是提高目前的移动网络中使用的无线频谱的使用效率。综合利用一系列允许快速改变通信业务的调制模式和编码模 ...… 查看全部问答∨ |
|
在看S3C6410 文档时,我怎么没有看见上电的时序要求啊?在做S3C6410的朋友们,你们怎么设计这一块的,莫非没有上电时序要求,要知道PXA270时序要求很高啊!… 查看全部问答∨ |
看了很多东西和书 但是还是一头雾水! 希望那为大哥给外完整的实列+注释给我讲解讲解 越详细月好! 比如入口函数那种简单的东西都要有注释(表明着是个入口函数!) 就太谢谢了啊&nb ...… 查看全部问答∨ |
在头文件head.S最后通常都是 .... ldr lr , =halt_loop .... halt_loop: b halt_loop 这个地方始终不是很明白; 还有就是,如果我的主函数是: int main() { while(1); return 0; ...… 查看全部问答∨ |
我做的是ARM7的程序,只要在程序里调用stdio.h里面的函数,比如说,fopen函数,编译可以通过,但是把程序烧到片子里,程序就是不运行!请高手帮忙指点,谢谢了!… 查看全部问答∨ |
我用windML在vxworks中开发图形界面,现在需要在界面中实时显示由网络数据过来的数据,看到资料上说用双缓冲什么的,但是我不是很清楚,希望做过类似工作的能给点建议和指导!谢谢… 查看全部问答∨ |
|
正打算使用STR91X写列,用于医疗监护模块处理,需要FLASH:>=256K,SRAM>=64K,双串口(或者USB、CAN),100M左右的处理速度,功耗低。… 查看全部问答∨ |