hngl.net
当前位置:首页 >> stm32 DmA iiC >>

stm32 DmA iiC

DMA通道和外设一一对应,所以不可以。

不用搞这个了STM32的IIC通讯有个bug。 因为ack信号时间很短暂,一旦错过了这个短暂的ACK信号,STM32就挂了。 想用IIC的话,就用软件模拟吧。

这个是STM32的一个bug。 它只在特定的一小段时间内读外设的ACK信号,一旦错过了ack信号,后面所有的时序都乱了。 ST建议所有涉及I2C的程序都采用DMA方式。 搞得我十分蛋疼,最后干脆直接用SPI的外设算了,速度还快。

1. 硬件IIC用法比较复杂,模拟IIC的流程更清楚一些。 2. 硬件IIC速度比模拟快,并且可以用DMA 3. 模拟IIC可以在任何管脚上,而硬件只能在固定管脚上。

用的是硬件IIC?采用DMA方式吗?如果IIC中断优先级低被其他程序打断,IIC通讯时间延时过长而且开了错误中断,程序就会一直进错误中断

SPI总线建议你使用STM32内置的SPI总线,网上有很多例程。如果你一定要模拟也是可以的。 IIC总线一直是STM32的诟病,用模拟总线更安全一些。 一般的IO口都可以配置成你说的四种模式的任意一种,而且编程过程中可以随时进行转换。 有些脚只能设置...

数据手册上都有的,一般有pb5,pb12复用功能是iic

一般情况下,那些所谓的BUG,我们是不会使用到的,除非特殊情形下,但官方也给出相应的解决方案。 STM32F10x_硬件I2C读写EEPROM(标准外设库版本): http://blog.csdn.net/ybhuangfugui/article/details/52175621

void TIM3_Int_Init(u16 arr,u16 psc) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_TimeBaseStructure.TIM_Period = arr; TIM_TimeBase...

硬件IIC只能接到它固定的管脚上,而且好像只有一两组,另外IO固定有时画板不好布线,有一定的局限性; 模拟I2C随便两个IO口就可以用了,另外同样的代码移值到其他类型的MCU上很方便,重新绑下IO口的就可以了。

网站首页 | 网站地图
All rights reserved Powered by www.hngl.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com