Проблема с использованием UART с STM32F0Discovery и сканером отпечатков пальцев - PullRequest
0 голосов
/ 05 марта 2020

В настоящее время я работаю над проектом, который включает плату STM32f0Discovery и этот сканер отпечатков пальцев, который использует связь UART. Чтобы инициализировать UART, я делаю следующее:

void init_uart(void){
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;

    USART_InitStructure.USART_BaudRate = 9600;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

    GPIO_Init(GPIOA, &GPIO_InitStructure);
    USART_Init(USART1, &USART_InitStructure);

    USART_Cmd(USART1, ENABLE);
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
}

Затем, чтобы отправить / получить байт, я делаю следующее:

void writechar(char c) {
    while((USART1 -> ISR & USART_ISR_TC) != USART_ISR_TC);
    USART1 -> TDR = c;
}

char readchar(void) {
    return USART_ReceiveData(USART1);
}

Чтобы проверить это, я отправил байт команды OPEN -байтов через for-l oop, затем команда LEN-ON тем же методом, который не дает результатов. При чтении ACK после команды OPEN считанные результаты представляют собой просто пустой массив байтов символов.

Итак, мой вопрос, является ли моя инициализация ошибкой? Или ошибка в чтении / записи? Или это может быть что-то совсем другое?

1 Ответ

0 голосов
/ 11 марта 2020

Получаете ли вы ответ ACK? Если это не так, то, вероятно, проблема в конфигурации или проводке. Я бы посоветовал вам попробовать подключить последовательные контакты к конвертеру serial-usb (FTDI, например: Нажмите здесь ) и использовать приложение, такое как Putty или YAT, для отправки команд (ACK) на ваш stm и с него. Попробуйте использовать ту же конфигурацию, что и у сканера, если он не работает, это проблема с вашей конфигурацией, если он работает, это сторона сканера проблем.

...