1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
Состав аппаратуры и её нагрузка на периферию
- Датчик освещённости (ADC)
- ADC1 CH6
- GPIO PA6(ADC_IN6)
- DMA ?
- Две сенсорные кнопки (TSC)
- TIM15
- GPIO PA2(Button2, TSC_G1_IO3), PA3(SEMCAP), PB3(Button1, TSC_G5_IO1),
PB4(SEMCAP)
- Шесть индикаторных ламп (SPI, GPIO)
- SPI 1 (в сдвиговый регистр)
- GPIO PA4(ST), PA5(SH), PA7(DATA), PB12(dp2), PB14(dp1)
- DMA ?
- Шесть разноцветных светодиодов (SPI, GPIO)
- SPI 2
- GPIO PB15(DATA)
- DMA ?
- Отладочные логи (UART)
- UART1 115200 8N1 RX,TX
- GPIO PA9(TX), PA10(RX)
- DMA ?
- GPS (UART)
- UART4 9600 8N1 RX,TX
- GPIO PA0(TX), PA1(RX)
- DMA ?
- WIFI/BLE (UART, GPIO)
- UART3 115200 8N1 RX,TX,RTS,CTS
- GPIO PA15(IO0), PB0(EN), PB1(RTS), PB10(TX), PB11(RX), PB13(CTS)
- DMA ?
Предполагаемый состав ПО:
- Объект управления лампами
- Установить яркость конкретной лампы или всех ламп сразу SetBrightness()
- Установить текущее значение для отображения (строка или что-то посложнее,
потому что там можно ещё запятые у каждой лампы включать) ApplyValue()
- Объект кнопки
- Геттер состояния IsPressed(), больше ничего
- Объект управления подсветкой
- Установить массив из 6-ти цветов RGB Apply()
- UART'ы - просто дескрипторы
- Дескрипторы 0, 1 и 2 - UART1, при использовании дескриптора 2 запись и
чтение производятся мимо буфера, напрямую в периферию, чтобы работало даже
когда прерывания отключены
- Дескриптор 3 - WIFI (UART3)
- Дескриптор 4 - GPS (UART4)
- Кольцевые буферы на RX и TX
- Чтобы работал fcntl(O_NONBLOCK)
- Объект датчика овещённости
- Из платформы более или менее сырое значение через GetValue(), чтобы
сравнивать его с порогом, который можно менять в рантайме
- IsObscured() для сравнения с порогом
- GetValue() для получения сырого значения
- SetThreshold() для установки нового порога
- Объект хранилища настроек
- Зависимость яркости ламп от освещённости
- Настройки хранятся в энергонезависимой памяти RTC
- Основной поток с логикой
- Режим меню с настройкой по кнопкам
- Обработка команд от WIFI
- Обработка данных от GPS и корректировка времени
|