[STM32F4] SPI数据,关于传输速度的问题

[复制链接]
8574|19
 楼主| feiyang0725 发表于 2018-1-19 17:15 | 显示全部楼层 |阅读模式
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;               
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;               
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;       
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;       
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;               
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;               
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;       
        SPI_InitStructure.SPI_CRCPolynomial = 7;       
        SPI_Init(SPI2, &SPI_InitStructure);
波特率设置问题,我用SPI接口传输的AD采样值,我用32分频的时候可以正常采集,数据正常。我用8分频的时候数据就乱了,这是为什么??

mmuuss586 发表于 2018-1-19 17:33 | 显示全部楼层
本帖最后由 mmuuss586 于 2018-1-19 17:34 编辑

速度太快了,外接的AD跟不上吧
fengfeng的恒 发表于 2018-1-19 18:24 | 显示全部楼层
看看外设的spi速度,看看datasheet,有说的,太快了肯定不行的。
dongnanxibei 发表于 2018-1-21 19:26 | 显示全部楼层
有道理,那边处理不过来
 楼主| feiyang0725 发表于 2018-1-23 09:41 | 显示全部楼层
mmuuss586 发表于 2018-1-19 17:33
速度太快了,外接的AD跟不上吧

外设是AD,采样速度是根据我的PWM控制,我可以控制这个速度
 楼主| feiyang0725 发表于 2018-1-23 09:42 | 显示全部楼层
fengfeng的恒 发表于 2018-1-19 18:24
看看外设的spi速度,看看datasheet,有说的,太快了肯定不行的。

这个速度和我采样频率有关。。目前采样频率是我控制的。采样越快SPI速度设置高是可以得,当采样速度慢的时候SPI速度过快就会有问题!
fengfeng的恒 发表于 2018-1-23 12:00 | 显示全部楼层
feiyang0725 发表于 2018-1-23 09:42
这个速度和我采样频率有关。。目前采样频率是我控制的。采样越快SPI速度设置高是可以得,当采样速度慢的 ...

AD外设采样的数据是一回事,主机SPI与外设通信的速度也是另外一回事;最多你通信读太快的时候外设没还没有新的数据而已,你应该判断这个有无新数据标志才对。
fengm 发表于 2018-1-23 15:08 | 显示全部楼层
SPI的速度受限。
jkl21 发表于 2018-1-23 15:09 | 显示全部楼层
这个是外部的ADC芯片影响的。
jkl21 发表于 2018-1-23 15:09 | 显示全部楼层
使用高速的ADC。
fengm 发表于 2018-1-23 15:09 | 显示全部楼层
速度太快,IO跟不上速度。
香水城 发表于 2018-1-24 10:02 | 显示全部楼层
只要你SPI的传输速率不低于ADC转换速率就不该有问题啊,也就是说每次转换的数据能及时地被取走。

你说采样速度慢的时候SPI速度过快就会有问题,那你ADC的数据提取是靠什么同步的,靠查询?靠中断?靠DMA?
 楼主| feiyang0725 发表于 2018-1-25 08:19 | 显示全部楼层
香水城 发表于 2018-1-24 10:02
只要你SPI的传输速率不低于ADC转换速率就不该有问题啊,也就是说每次转换的数据能及时地被取走。

你说采样 ...

我的AD采样速度在随着时间变化而变化,我计算过最大是300*64也就是接近20K的速度,我SPI分频32,也有1M的速度。但是从数据来看,显示SPI传输慢了,提高SPI速度就正常了。
CaLipton 发表于 2018-1-25 14:28 | 显示全部楼层
SPI速度慢了?还以为是快了呢
sdggg 发表于 2018-1-25 21:49 来自手机 | 显示全部楼层
1M的速度哪算快,我用的天微显示芯片都是1M速度传输,另外,adc不管你读取多快都不会乱,也不会清零,只是值更新慢一点,这是转换完成后不关闭adc的前提下,库函数是直接关闭adc的
 楼主| feiyang0725 发表于 2018-1-26 08:42 | 显示全部楼层
sdggg 发表于 2018-1-25 21:49
1M的速度哪算快,我用的天微显示芯片都是1M速度传输,另外,adc不管你读取多快都不会乱,也不会清零,只是 ...

只要大约AD转换速度就可以了吧。我现在用的是2M多的速度
sdggg 发表于 2018-1-26 18:42 | 显示全部楼层
feiyang0725 发表于 2018-1-26 08:42
只要大约AD转换速度就可以了吧。我现在用的是2M多的速度

其实adc值是不会乱的,除非输入的电压就不稳定,单从你改小分频来看,只是提高了SPI速度,但发送数据周期还是不变(根据ADC读取周期来发送?),SPI时钟提高了4倍,就是4M,那么有可能IO配置成低速模式2M,这样数据就乱了
Thorald 发表于 2018-1-30 17:55 | 显示全部楼层
ADC的数据提取是什么方法同步的
ztime2000 发表于 2018-3-17 12:03 | 显示全部楼层
有道理
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

128

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部