STM32N6跳线flash烧录座出现写入错误,该如何解决。
STM32H743 以太网 为什么需要设置在0x30040000才能使用
简单聊聊STM32的SPI外设
DMAMUX 使用内部外设Request Event(不使用TIM12和LPTIM)
stm32H503CBT6 ADC在某次上电后波动变大了一些。
STM32H743 的ADC线性校准问题
STM32N6 SPI无信号问题
NUCLEO-H7S3L8开发板,操作板载FLASH出错,无法进入APP
H743 ulpi phy 引脚配置
STM32H747XG下载一次仿真器就检测不到,运行不能正常
微信公众号
手机版
LL命令会节省一些代码时间,但是外设的运行和处理方式并不会节省很多。
你现在20位ADC,转换速率0.5s,按32位接收的话,那么至少需要64M的波特率才能满足要求。
使用STM32H5的SPI可以实现125M的波特率,同时SPI带16字节的FIFIO,配合接收FIFO,
这样看来接收应该是没啥问题的。如果每次ADC采样结果的数据不多的话,每次接收完一笔
数据后再去处理应该来得及。
这个处理过程如果时间不是很紧张的话,至于是使用HAL库还是LL库组织代码
问题不大。 我认为这个接收的快慢跟你使用哪个类型库组织的配置及启动代码没什么关系。
[md]瓶颈就在SPI读取上,用hal的:
HAL_SPI_Receive(&hspi1, mrx_data, 3, HAL_MAX_DELAY);//SPI一次连读取3字节AD转换结果 HAL SPI读取3字节需要1.95us
而ADC的转换速率是2Msps即0.5uS一次。不能用DMA,因为每一次转换之前要给ADC一个几百ns的正脉冲,CPU必须介入每一次转换,这就是无奈之处。
总之SPI_Receice时间越短越好。
用timer2 去触发 GPDMA1--> 搬运数据给 SPI TXDR,
同时触发 GPDMA2--> 从SPI RXDR搬运数据给RAM。
定时器输出的PWM可以作为给ADC的脉冲信号
这里修改了一下HAL_SPI_TransmitReceive_DMA 内接收的数据个数,使得接收数组足够大
这样就可以有足够的时间在半完成和完成中断处理数据.
测试中将 spi 数据短接,模拟ADC输出结果