IOC Configuration
...
USART2
Basic Parameters
...
Don’t touch Advanced Parameters
...
Enable TX/RX Inversion (SBUS is inverted UART signal)
USART is UART with Sync option, meaning you can utilize a clock as a reference frame for data.
DMA Configuration
...
NVIC Settings
...
Getting Code Running
Add these lines of your code to main.cpp
.
Code Block | ||
---|---|---|
| ||
/* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "SBUSReceiver.hpp" #include "RCReceiver_config.hpp" /* USER CODE END Includes */ |
Code Block | ||
---|---|---|
| ||
/* USER CODE BEGIN 2 */
SBus sbus_data;
RCControl control_data;
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
sbus_data = sbus_pointer->GetSBUS();
control_data = sbus_pointer->GetRCControl();
/* USER CODE BEGIN 3 */
} |
Building and Flashing
Build using CMAKE with the appropriate command. (Check READ.ME file for ZP3.5) Building inside STM32CubeIDE will give errors as it does not build the code
...
language | cpp |
---|
...
using CMAKE.
When flashing, go to debug configurations and change the C/C++ Application to point to ZeroPilot.elf
Also, select the “Disable auto build” option.
...
Troubleshooting
If all the values do not change and have a value of 1000 even when you move the controller, your ioc is probably not configured correctly. Set a breakpoint in the callback function and make sure it is being hit. Otherwise, unplug and replug the tracer or use a different board for testing.
To Do
- Configure Nucleo pins
- Test data with a logic analyzer and RC controller
- Debug with interrupts
- Transmit receive signal to nucleo to check if the data is similar
...