настроил DMA на отправку через UART1 , UART настроен правильно 100%.
Пытаюсь отправить массив из 16 байт, но при этом передается правильно только 1ый элемент, а дальше какой-то мусор
длина слова в памяти - 1 байт, длина слова в периферии тоже 1 байт, сам массив тоже u8 т.е. 1 байт, инкремент памяти включен, но ощущение что DMA просто хаотично закидывает что-то из флеш в DR, при этом если сделать массив u16 или u32, то мусор приобретает достаточно стабильный вид, т.е. повторяется хотя бы, а при u8 он постоянно разный и иногда кол-во передаваемых элементов не 16 а 14 или 15 .....
Пытаюсь отправить массив из 16 байт, но при этом передается правильно только 1ый элемент, а дальше какой-то мусор
длина слова в памяти - 1 байт, длина слова в периферии тоже 1 байт, сам массив тоже u8 т.е. 1 байт, инкремент памяти включен, но ощущение что DMA просто хаотично закидывает что-то из флеш в DR, при этом если сделать массив u16 или u32, то мусор приобретает достаточно стабильный вид, т.е. повторяется хотя бы, а при u8 он постоянно разный и иногда кол-во передаваемых элементов не 16 а 14 или 15 .....
Код: Выделить всё
void init_dma()
{
RCC->AHBENR|=RCC_AHBENR_DMA1EN;
DMA1_Channel4->CPAR = (uint32_t)&(USART1->DR);
DMA1_Channel4->CMAR = (uint32_t)(buffer); // адрес массива
DMA1_Channel4->CNDTR=16;
DMA1_Channel4->CCR &= ~(DMA_CCR4_MSIZE_0 | DMA_CCR4_MSIZE_1);
DMA1_Channel4->CCR &= ~(DMA_CCR4_PSIZE_0 | DMA_CCR4_PSIZE_1);
DMA1_Channel4->CCR|= DMA_CCR4_PL_0 | DMA_CCR4_PL_1 | DMA_CCR4_DIR;// | DMA_CCR4_CIRC ;
DMA1_Channel4->CCR|= DMA_CCR4_MINC;
DMA1_Channel4->CCR|= DMA_CCR4_EN;
}
