CN / EN
CN / EN

提问

获得支持

您的项目私密技术问题如需获得一对一支持,请点击下方联系我们。

GR551X SDK对CS有特殊时序要求的SPI外设驱动调试案例分享 GR551x

已解决

Ping

汇顶员工
2021-12-24 10:51

以某款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);




0收藏

0赞成

最佳答案

Ping

汇顶员工
2022-01-14 10:59


0条评论

0赞成

0收藏

您的评论

登录后可回答问题,请 注册

我们时刻倾听您的声音
联系销售

扫描关注公众号

打开微信,使用“扫一扫”即可关注