Other Parts Discussed in Thread: RM44L920, HALCOGEN
主题中讨论的其他器件: HALCOGEN
工具/软件:Code Composer Studio
您好!
我需要按周期顺序读取4个 ADC 的采样数据、其中4个 ADC 共享相同的 SPI 、但由 CS 触发的多路信号分离器进行访问。 若要读取 ADC 采样数据、 需要与 ADC 在帧之后进行通信:1条读取命令+ 3个时钟、4个字节、每个字节为8位。
现在、我想使用 DMA 模式来读取 ADC 采样数据。 下面是我的设计: 将 DMA Request[0](即标准模式下的 SPI 接收请求)连接到 DMA CHANAN 1,而 DMA Request[1](即标准模式下的 SPI 传输请求到 DMA 通道0),我的控制数据包 定义如下:
G_dmaCTRL dmaCTRL_tran ={
( uint32 )和***[0], //初始源地址
(uint32) spiREG1->DAT1, //初始目的地址
DMA_CH1、 //要触发的下一个 Ctrl 数据包+ 1.
4、 //帧 计数
4、 //元素数量
0、 //元素目标偏移量
4、 //元素源偏移
0、 //帧目的偏移量
16、 //帧源偏移
0x04、 // DMA 端口
ACCESS_32_BIT、 //读取元素大小
ACCESS_32_BIT、 //写入元素大小
1、 //触发类型-帧/块
ADDR_OFFSET、 //源的寻址模式
0、 //目的地址寻址模式
0、 //自动初始化模式
NO_CHANNEL、 // uint32组合; //下一个 ctrl 数据包触发(未使用)
};
g_dmaCTRL dmaCTRL_rec={
(uint32) spiREG1->BUF、 //初始源地址
( uint32 ) Spi1DmaRevData //初始目的地址
DMA_CH0、 //要触发的下一个 Ctrl 数据包+ 1.
4、 //帧 计数
4、 //元素数量
4、 //元素目标偏移量
0、 //元素源偏移
16、 //帧分频偏移
0、 //帧源偏移
0x04、 // DMA 端口
ACCESS_32_BIT、 //读取元素大小
ACCESS_32_BIT、 //写入元素大小
1、 //触发类型-帧/块
0、 //源的寻址模式
ADDR_OFFSET、 //目的地址寻址模式
0、 //自动初始化模式
NO_CHANNEL、 //下一个 Ctrl 数据包触发器(未使用)
};
我的问题是它无法正常工作。 从 OSC 中、我仅定期捕获16个 SPI 时钟、这意味着2个字节、 CS0仅在前8个时钟有效、但在后8个时钟无效。如果它正常工作、一个 CS 将在32个 SPI 时钟(4字节)内保持有效、因为它在 SPI 接收器中断模式下工作。
我想我有什么问题、请告诉我如何配置 DMA 数据包、或者您是否可以为我提供 Rm44L920?中的 SPI DMA 示例
此致、