Парни, вижу что вы на форуме с опытом, просветите по созвучной с SPI темой (чтобы не плодить тем) - DMA в Periph и HAL, а именно не нашел в HAL аналога атрибуту DMA_InitStructure.DMA_Memory0BaseAddr, т.е. собственно DMA_Memory0BaseAddr задает ссылку на memory переменную и после разрешения DMA и SPI осуществляется передача (в примере ниже цикличная) данных из переменной в SPI->DR.
В HAL такой конкретной линковки с переменной нет, я правильно понимаю, что функцию линковки можно считать HAL_SPI_Transmit_DMA(&hspiX, (uint8_t *)&buffer, sizeof(buffer))?
Или дайте наводку на аналог DMA_PeripheralBaseAddr в HAL.
Спасибо.
в Periph:
Код
DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;
DMA_InitStructure.с = (uint_t)&buffer;
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&SPI1->DR;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
...
пуск передачи
DMA_Cmd(DMA2_StreamX,ENABLE);
SPI_Cmd(SPIX, ENABLE);
в HAL:
Код
...
hdma_spiX_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
hdma_spiX_tx.Init.PeriphInc = DMA_PINC_DISABLE;
hdma_spiX_tx.Init.MemInc = DMA_MINC_ENABLE;
hdma_spiX_tx.Init.Mode = DMA_CIRCULAR;
...
HAL_DMA_Init(&hdma_spi1_tx);
// линк
__HAL_LINKDMA(hspi,hdmatx,hdma_spiX_tx);
...
пуск передачи
__HAL_DMA_ENABLE(&hdma_spiX_tx);
__HAL_SPI_ENABLE(&hspiX);