Написать функции взаимодействия с периферией STM32 на HAL и CubeMX
30 000 руб. за проект
Необходимо для микроконтроллера STM32F107RCT в программе STM32CubeMx настроить всю периферию и RTOS по блокам и написать функции взаимодействия для каждого модуля (периферии) в отдельной подключаемой библиотеке (код и заголовки):
SPI1 (PA4=CS, PA5=CLK, PA6=MISO, PA7=MOSI, PC4=INT2, PC5=INT1): Акселерометр LIS3DH
1. Установить частоту клоков 4-10 МГц
2. Настроить частоту и пределы измерения акселерометра на 100Гц и 2-5G соответственно. Все параметры настройки держать в памяти устройства (в переменной состояния акселерометра)
3. Настроить акселерометр, чтобы он генерировал прерывание по ножкам INT1 и/или INT2 при нарушении состояния покоя и при превышении ускорения по любой из координат более 2G с установлением соответствующего флага в переменной состояния акселерометра.
4. Настроить автоматическое считывание ускорений по x,y,z при возникноверии прерывания (PC4 и/или PC5), а так же по команде (например, после выставления флага в переменной состояния)
5. Включать модуль и начинать считывание только в том случае, если в переменной состояния установлен соответствующий флаг
SPI2 (PB12=CS, PB13=CLK, PB14=MISO, PB15=MOSI): Flash-память W25Q64
1. Установить частоту клоков 10-20 МГц
2. Прописать переменную, в которой будет храниться текущее состояние и настройки модуля.
3. Прописать команды чтения и записи в память по адресу и количеству байт
4. В команду записи добавить возможность верификации записанных данных
5. Включать модуль и начинать считывание только в том случае, если в переменной состояния установлен соответствующий флаг
USART2 (PA2=TX, PA3=RX, PA1=DE): RS-485
1. Прописать переменную с текущими настройками и состоянием модуля
2. Сделать возможность перенастройки скорости по выбору при параметрах 8N1 путем прописывания в переменную состояния определенных битов: 4800, 9600, 19200, 38400, 115200
3. Сделать функцию отправки массива байт с установлением флага в переменную состояния до передачи и по окончании (количество байт от 1 до 64)
4. Сделать функцию приема байт с возможностью установки как определенного количества байт (не более 64), так и бесконечного с установкой таймаута, при наступлении которого установится соответствующий флаг в переменной состояния.
5. Включать модуль и начинать считывание только в том случае, если в переменной состояния установлен соответствующий флаг
UART4 (PC10=TX, PC11=RX): GPS NMEA
1. Прописать структуру с приемными данными, в которых будет храниться:
1.1. время последнего принятого сообщения (HAL_GetTick()),
1.2. переменная состояния
1.3. Распарсенные Время и дата
1.4. Координаты
1.5. вектор направления движения
1.6. скорость
1.7. количество спутников
1.8. hdop, vdop
1.9. валидность
2. написать фенкцию парсинга принимаемых данных с параметрами 8N1 на скорости 9600
3. Синхронизировать с RTC. Если полученная дата меньше, чем в RTC или чем 01.12.2019, то выставить соответствующий флаг
4. Начинать парсинг только в том случае, если в переменной состояния установлен соответствующий флаг
UART5 (PC12=TX, PD2=RX): GSM + Bluetooth
1. Прописать структуру с приемными данными GSM, в которых будет храниться:
1.1. время последнего принятого сообщения (HAL_GetTick()),
1.2. переменная состояния
1.3. номера трех ближайших базовых станций (и желательно, их координаты)
1.4. IMEI, CCID, массив доступных для регистрации кодов операторов и их названий (домашний должен быть в самом начале)
1.5. уровень качества связи и помех с периодическим обновленим (1 раз в 1-5 минут)
1.6. название GSM-модуля
2. Написать алгоритм инициализации модуля и перевода его с любых скоростей(4800, 9600, 19200) на скорость 115200 при параметрах 8N1
3. Написать алгоритм создания TCP-подключений (если возможно, параллельно двух) и отправки/приема байт из/в массив(а)
4. Сделать возможность отправки ping-а и получения pong-а для определения активности соединения. Переподключиться, если не активно.
5. Прописать структуру с приемными данными Bluetooth, в которых будет храниться:
1.1. время последнего принятого сообщения (HAL_GetTick()),
1.2. переменная состояния
1.3. данные окружающих bluetooth устройств (подключенные идут в самом начале с соответствующим флагом)
6. Написать алгоритм поиска bluetooth устройств и подключения к ним
7. написать функции отправки байт подключенным устройствам
8. написать функции приема байт от подключенных устройств
CAN (PB8=RX, PB9=TX):
1. Написать функцию изменения настроек скорости (125 кбит/с, 250, 500, 1000) и битности (11 бит или 29)
2. написать функции отправки байт из массива байт
3. написать функции приема байт в массив байт
4. сделать переменную состояния модуля
RTC:
1. Инициализировать календарь и синхронизировать его с полученными данными от GPS-NMEA
FREERTOS:
Инициализировать и запускать в нём циклически задачи по работе с вышеперечисленными модулями.
USB FS (PA11=DM, PA12=DP): Виртуальный COM-порт
1. Инициализировать. Желательно дать название "TEST_BOARD"
2. Написать функции отправки и приема массива байт как в USART2
Пожелания:
1. Таймеры можно использовать на Ваше усмотрение, но оставить на запас 1-2 свободных
2. По возможности, приемы/отправки байт производить в фоне (DMA), не занимая время микроконтроллера.
3. Все настройки периферии (ножки, скорости и т.п.) прописать дефайнами в заголовочных файлах.
4. Среда разработки - keil 5 или IAR
5. Поэтапная оплата
Прочее:
1. Схема во вложении.
2. Модуль АЦП и мигания светодиодами кое-как написаны и кое-как работают.
3. Модуль LORA пока не пишем
4. От Вас нужна цена, сроки реализации и портфолио с Вашим кодом на подобную тематику
5. Бутлодер не нужен
SPI1 (PA4=CS, PA5=CLK, PA6=MISO, PA7=MOSI, PC4=INT2, PC5=INT1): Акселерометр LIS3DH
1. Установить частоту клоков 4-10 МГц
2. Настроить частоту и пределы измерения акселерометра на 100Гц и 2-5G соответственно. Все параметры настройки держать в памяти устройства (в переменной состояния акселерометра)
3. Настроить акселерометр, чтобы он генерировал прерывание по ножкам INT1 и/или INT2 при нарушении состояния покоя и при превышении ускорения по любой из координат более 2G с установлением соответствующего флага в переменной состояния акселерометра.
4. Настроить автоматическое считывание ускорений по x,y,z при возникноверии прерывания (PC4 и/или PC5), а так же по команде (например, после выставления флага в переменной состояния)
5. Включать модуль и начинать считывание только в том случае, если в переменной состояния установлен соответствующий флаг
SPI2 (PB12=CS, PB13=CLK, PB14=MISO, PB15=MOSI): Flash-память W25Q64
1. Установить частоту клоков 10-20 МГц
2. Прописать переменную, в которой будет храниться текущее состояние и настройки модуля.
3. Прописать команды чтения и записи в память по адресу и количеству байт
4. В команду записи добавить возможность верификации записанных данных
5. Включать модуль и начинать считывание только в том случае, если в переменной состояния установлен соответствующий флаг
USART2 (PA2=TX, PA3=RX, PA1=DE): RS-485
1. Прописать переменную с текущими настройками и состоянием модуля
2. Сделать возможность перенастройки скорости по выбору при параметрах 8N1 путем прописывания в переменную состояния определенных битов: 4800, 9600, 19200, 38400, 115200
3. Сделать функцию отправки массива байт с установлением флага в переменную состояния до передачи и по окончании (количество байт от 1 до 64)
4. Сделать функцию приема байт с возможностью установки как определенного количества байт (не более 64), так и бесконечного с установкой таймаута, при наступлении которого установится соответствующий флаг в переменной состояния.
5. Включать модуль и начинать считывание только в том случае, если в переменной состояния установлен соответствующий флаг
UART4 (PC10=TX, PC11=RX): GPS NMEA
1. Прописать структуру с приемными данными, в которых будет храниться:
1.1. время последнего принятого сообщения (HAL_GetTick()),
1.2. переменная состояния
1.3. Распарсенные Время и дата
1.4. Координаты
1.5. вектор направления движения
1.6. скорость
1.7. количество спутников
1.8. hdop, vdop
1.9. валидность
2. написать фенкцию парсинга принимаемых данных с параметрами 8N1 на скорости 9600
3. Синхронизировать с RTC. Если полученная дата меньше, чем в RTC или чем 01.12.2019, то выставить соответствующий флаг
4. Начинать парсинг только в том случае, если в переменной состояния установлен соответствующий флаг
UART5 (PC12=TX, PD2=RX): GSM + Bluetooth
1. Прописать структуру с приемными данными GSM, в которых будет храниться:
1.1. время последнего принятого сообщения (HAL_GetTick()),
1.2. переменная состояния
1.3. номера трех ближайших базовых станций (и желательно, их координаты)
1.4. IMEI, CCID, массив доступных для регистрации кодов операторов и их названий (домашний должен быть в самом начале)
1.5. уровень качества связи и помех с периодическим обновленим (1 раз в 1-5 минут)
1.6. название GSM-модуля
2. Написать алгоритм инициализации модуля и перевода его с любых скоростей(4800, 9600, 19200) на скорость 115200 при параметрах 8N1
3. Написать алгоритм создания TCP-подключений (если возможно, параллельно двух) и отправки/приема байт из/в массив(а)
4. Сделать возможность отправки ping-а и получения pong-а для определения активности соединения. Переподключиться, если не активно.
5. Прописать структуру с приемными данными Bluetooth, в которых будет храниться:
1.1. время последнего принятого сообщения (HAL_GetTick()),
1.2. переменная состояния
1.3. данные окружающих bluetooth устройств (подключенные идут в самом начале с соответствующим флагом)
6. Написать алгоритм поиска bluetooth устройств и подключения к ним
7. написать функции отправки байт подключенным устройствам
8. написать функции приема байт от подключенных устройств
CAN (PB8=RX, PB9=TX):
1. Написать функцию изменения настроек скорости (125 кбит/с, 250, 500, 1000) и битности (11 бит или 29)
2. написать функции отправки байт из массива байт
3. написать функции приема байт в массив байт
4. сделать переменную состояния модуля
RTC:
1. Инициализировать календарь и синхронизировать его с полученными данными от GPS-NMEA
FREERTOS:
Инициализировать и запускать в нём циклически задачи по работе с вышеперечисленными модулями.
USB FS (PA11=DM, PA12=DP): Виртуальный COM-порт
1. Инициализировать. Желательно дать название "TEST_BOARD"
2. Написать функции отправки и приема массива байт как в USART2
Пожелания:
1. Таймеры можно использовать на Ваше усмотрение, но оставить на запас 1-2 свободных
2. По возможности, приемы/отправки байт производить в фоне (DMA), не занимая время микроконтроллера.
3. Все настройки периферии (ножки, скорости и т.п.) прописать дефайнами в заголовочных файлах.
4. Среда разработки - keil 5 или IAR
5. Поэтапная оплата
Прочее:
1. Схема во вложении.
2. Модуль АЦП и мигания светодиодами кое-как написаны и кое-как работают.
3. Модуль LORA пока не пишем
4. От Вас нужна цена, сроки реализации и портфолио с Вашим кодом на подобную тематику
5. Бутлодер не нужен
- Файлы
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.