Ping
以某款DAC IC时序要求为例,
每次输出一个数据需要拉动一次片选脚,且数据输出频率要求能达到100KHz,SDK中默认的DMA接口不能自动控制片选脚,如果每发一次都中断控制一次片选,就会导致占用资源过多 & 效率低。
基于1.6.12版本SDK解决方案如下(PS:1.6.12之前版本不支持该接口):
1. 配置SPI V2 功能宏 (gr55xx_hal_conf.h) ,启用 HAL_SPI_V2_MODULE_ENABLED 并屏蔽HAL_SPI_MODULE_ENABLED定义;
2. 新增接口: SPI Mater使用DMA 发送数据, 每发送1 Beat,
SPI CS 自动Toggle释放一次. (接口适用于特殊要求场景)
(1) HAL层接口
(2)
APP (分同步和异步)
使用注意事项:
A: data_width 目前仅支持参数 : @SPI_DATASIZE_8BIT
@SPI_DATASIZE_16BIT @SPI_DATASIZE_32BIT;
B:Size 最大4095拍 (8bit
– 1Byte/拍; 16bit – 2Byte/拍; 32bit –
4Byte/拍);
C:Size 长度必须是拍倍数;
D:注意软件预先处理不同拍宽度的端序问题;
E:新接口片选CS必须工作在IP控制下(根据DataSheet 设置实际的CS
mux), 不能将CS mux 设置为GPIO 模式;
相关接口应用的逻辑分析仪波形参考:
(1)
app_spi_v2_cs_toggle_transmit_dma_sync(APP_SPI_ID_MASTER,
SPI_DATASIZE_8BIT, sdata, 256); // sdata 存储 0x00,0x01,0x02,0x03,…. 下同
(2)
app_spi_v2_cs_toggle_transmit_dma_sync(APP_SPI_ID_MASTER,
SPI_DATASIZE_16BIT, sdata, 256);
(3)
app_spi_v2_cs_toggle_transmit_dma_sync(APP_SPI_ID_MASTER,
SPI_DATASIZE_32BIT, sdata, 256);
Ping
打开微信,使用“扫一扫”即可关注