你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103 GPIO速度。

[复制链接]
cookles13 提问时间:2022-4-7 09:23 / 已解决

用STM32F103 普通IO模拟通信协议如I2C,SPI,串口等。 怎么精准的控制通讯的速率,我看到STLINK也是用的STM32的芯片,为何通讯速度能达到10M那么高? 怎么操作的,有例程指导一下吗?

收藏 评论10 发布时间:2022-4-7 09:23

举报

10个回答
STMWoodData 最优答案 回答时间:2022-4-7 15:10:56

cookles13 发表于 2022-4-7 14:37
芯片自带的外设肯定是最方便的,但是现在的需求是需要同样的几个IO去连接不同的芯片,通信协议IIC,S ...

[md]可以找下UART,SPI,IIC可以复用功能共用引脚,用到那个外设就初始化成对应外设引脚。

或者试下把IO引脚并在一起,对应引脚初始化成对应外设,并在一起的另外没用到引脚初始化成高阻输入。

STMWoodData 回答时间:2022-4-7 09:49:19

IO模拟通信协议就是控制IO高低之间的延时来控制速率。设置IO高低之间一般都有个延时函数,延时函数精准,通讯速率就比较精准,但还是会被中断打断,速率有误差,而且占用CPU处理时间太多。用硬件通信外设更方便,更精准,更高速,没有这些问题。

废鱼 回答时间:2022-4-7 10:50:02

精准控制速度还是用汇编会好点,如果用C语言,控制好代码应该也没问题。这个时候应该是不要跑系统了,只跑裸机。间隔控制可以考虑用定时器控制到最小或者直接用代码加延时,考虑某段代码用多少机器周期都算好才能达到预想的状态。103是可以达到10M的更新频率的。

butterflyspring 回答时间:2022-4-7 14:15:30

STM32F103资源丰富,你说的这些通讯方式都有相应的外设了,不需要模拟了。 ST-LINK也不是用模拟IO方式做的呀。

cookles13 回答时间:2022-4-7 14:29:36

butterflyspring 发表于 2022-4-7 14:15
STM32F103资源丰富,你说的这些通讯方式都有相应的外设了,不需要模拟了。 ST-LINK也不是用模拟IO方式 ...

[md]我要做的是一个编程器,用同样的几个IO连接不同通信协议的芯片,有IIC,SPI,双线串口,单线串口,JTAG,SWD等等。 所以是需要模拟的。但是模拟的通信速率不好精确控制,只能大概的延时。

cookles13 回答时间:2022-4-7 14:33:47

废鱼 发表于 2022-4-7 10:50
精准控制速度还是用汇编会好点,如果用C语言,控制好代码应该也没问题。这个时候应该是不要跑系统了, ...

[md]汇编不太会,现在是用C语言写的,也只能用延时来控制大概的时间,太快了延时也不好操作,所以很麻烦。

cookles13 回答时间:2022-4-7 14:37:10

STMWoodData 发表于 2022-4-7 09:49
IO模拟通信协议就是控制IO高低之间的延时来控制速率。设置IO高低之间一般都有个延时函数,延时函数精准 ...

[md]芯片自带的外设肯定是最方便的,但是现在的需求是需要同样的几个IO去连接不同的芯片,通信协议IIC,SPI,串口都有。 就比较麻烦,目前用的就是延时,但是不太精确且麻烦。

鹿森 回答时间:2022-4-7 21:23:41

学习一下!

这个事情很尴尬 回答时间:2022-4-15 11:25:59

cookles13 发表于 2022-4-7 14:29</p>
<p>[md]我要做的是一个编程器,用同样的几个IO连接不同通信协议的芯片,有IIC,SPI,双线串口,单线串口 ...

[md]我有个大胆的想法,用通道选择器怎么样?

这个事情很尴尬 回答时间:2022-4-15 11:27:31

这个事情很尴尬 发表于 2022-4-15 11:25
我有个大胆的想法,用通道选择器怎么样?

你可以用定时器或者时间片来轮询,这样就能控制你的频率,不要库函数,直接对寄存器进行操作,

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版