新手入门
- 积分
- 16
- 金钱
- 16
- 注册时间
- 2019-8-14
- 在线时间
- 7 小时
|
1金钱
想采用 DMA的方式接收AD信号,采用SPI总线,单片机为主机,AD为从机。
试验了@xuande 的方法一路是:
定时器触发DMA,向 SPI-DR 寄存器写数据,目的是启动该SPI 的接收功能(因为SPI的收发是同时、同步的);
同时定时器输出PWM波形,触发外部芯片的动作,比如启动AD采集新数据。
另一路是:
该 SPI 的 RX 事件触发 DMA,目的是把 SPI 接收到的数据搬移到其他地方。
因为是四路AD,所以需要发送出四个16bit的CLK,但是按照这个思路配置后只产生了16个时钟周期,只能接收到一路信号。求各位大神帮忙
初始化代码如下:
HAL_DMA_Start(&hdma_tim1_up, (uint32_t)&TX_Buffer,(uint32_t)&SPI1->DR,8); //写SPI-DR
__HAL_TIM_ENABLE_DMA(&htim1, TIM_DMA_UPDATE);
__HAL_SPI_ENABLE(&hspi1);
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); //开启AD转换时钟
|
-
绿色通道是tim 红色通道是SPI-CLK时钟
|