NewSistems Опубликовано 6 июля, 2018 Жалоба Поделиться Опубликовано 6 июля, 2018 Необходимо выводить на блок из 4 семисегментных индикаторов данные, управление лежит на двух сдвиговых регистрах: Первый хранит в себе число на вывод, второй адрес(адресует на конкретный разряд в блоке). Данные передаю через аппаратный SPI, настроенный в STM32CubeMX, но он у меня не работает. Мой алгоритм Задаю наборы для отображения на индикаторе и адресные наборы для перемещения по разрядам в блоке. uint8_t i,j = 0; uint8_t buff[8] = {1,2,3,4,5,6,7,8}; uint8_t digit[10] = { 0xC0, // 0 0xF9, // 1 0xA4, // 2 0xB0, // 3 0x99, // 4 0x92, // 5 0x82, // 6 0xF8, // 7 0x80, // 8 0x90, // 9 }; uint8_t chr[4] = { 0x8, 0x4, 0x2, 0x1 }; Строб необходим для начала записи данных в регистр хранения сдвигового регистра void strob(void){ HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET); HAL_Delay(85); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET); HAL_Delay(85); } Функция передачи данных с использованием HAL функции и строба. void spi_send(uint8_t *data, uint8_t it){ strob(); uint8_t *d = data; for(j = 0; j <=it; j++){ d = &data[j]; HAL_SPI_Transmit ( &hspi1, d, 8, 50); } strob(); } Отправляю смешение по элементам блока семисегментного индикатора. while (1) { i++; if(i<=4){ spi_send(chr, i); } else i = 4; i = -1; s.7z Файлы с IAR проектом и CubeMX проектом инициализации. 1dsfs.7z Пример работы индикатора video_2018-07-04_00-13-42.mp4 Читать дальше Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.