1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-16 21:05:35 +03:00

[4.5.2] Fix SA for holybro on AT32F4 (#14246)

* Fix SA on softserial for AT32

* Add another macro

* fix typo
This commit is contained in:
Mark Haslinghuis 2025-03-11 16:30:13 +01:00 committed by GitHub
parent 28e9df19d3
commit 5f6e00d904
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 13 additions and 4 deletions

View file

@ -387,12 +387,21 @@ uartPort_t *serialUART(UARTDevice_e device, uint32_t baudRate, portMode_e mode,
if ((options & SERIAL_BIDIR) && txIO) { if ((options & SERIAL_BIDIR) && txIO) {
//mode,speed,otype,pupd //mode,speed,otype,pupd
#ifndef USE_NONCOMPLIANT_SMARTAUDIO
ioConfig_t ioCfg = IO_CONFIG( ioConfig_t ioCfg = IO_CONFIG(
GPIO_MODE_MUX, GPIO_MODE_MUX,
GPIO_DRIVE_STRENGTH_STRONGER, GPIO_DRIVE_STRENGTH_STRONGER,
((options & SERIAL_INVERTED) || (options & SERIAL_BIDIR_PP) || (options & SERIAL_BIDIR_PP_PD)) ? GPIO_OUTPUT_PUSH_PULL : GPIO_OUTPUT_OPEN_DRAIN, ((options & SERIAL_INVERTED) || (options & SERIAL_BIDIR_PP) || (options & SERIAL_BIDIR_PP_PD)) ? GPIO_OUTPUT_PUSH_PULL : GPIO_OUTPUT_OPEN_DRAIN,
((options & SERIAL_INVERTED) || (options & SERIAL_BIDIR_PP_PD)) ? GPIO_PULL_DOWN : GPIO_PULL_UP ((options & SERIAL_INVERTED) || (options & SERIAL_BIDIR_PP_PD)) ? GPIO_PULL_DOWN : GPIO_PULL_UP
); );
#else
ioConfig_t ioCfg = IO_CONFIG(
GPIO_MODE_MUX,
GPIO_DRIVE_STRENGTH_STRONGER,
((options & SERIAL_INVERTED) || (options & SERIAL_BIDIR_PP) || (options & SERIAL_BIDIR_PP_PD)) ? GPIO_OUTPUT_PUSH_PULL : GPIO_OUTPUT_OPEN_DRAIN,
(options & SERIAL_INVERTED) ? GPIO_PULL_DOWN : GPIO_PULL_UP
);
#endif
IOInit(txIO, OWNER_SERIAL_TX, RESOURCE_INDEX(device)); IOInit(txIO, OWNER_SERIAL_TX, RESOURCE_INDEX(device));
IOConfigGPIOAF(txIO, ioCfg, uartdev->tx.af); IOConfigGPIOAF(txIO, ioCfg, uartdev->tx.af);
} else { } else {

View file

@ -497,7 +497,7 @@ static void saReceiveFrame(uint8_t c)
static void saSendFrame(uint8_t *buf, int len) static void saSendFrame(uint8_t *buf, int len)
{ {
if (!IS_RC_MODE_ACTIVE(BOXVTXCONTROLDISABLE)) { if (!IS_RC_MODE_ACTIVE(BOXVTXCONTROLDISABLE)) {
#ifndef AT32F4 #ifdef USE_NONCOMPLIANT_SMARTAUDIO
switch (smartAudioSerialPort->identifier) { switch (smartAudioSerialPort->identifier) {
case SERIAL_PORT_SOFTSERIAL1: case SERIAL_PORT_SOFTSERIAL1:
case SERIAL_PORT_SOFTSERIAL2: case SERIAL_PORT_SOFTSERIAL2:
@ -509,14 +509,14 @@ static void saSendFrame(uint8_t *buf, int len)
serialWrite(smartAudioSerialPort, 0x00); // Generate 1st start byte serialWrite(smartAudioSerialPort, 0x00); // Generate 1st start byte
break; break;
} }
#endif //AT32F4 #endif // USE_NONCOMPLIANT_SMARTAUDIO
for (int i = 0 ; i < len ; i++) { for (int i = 0 ; i < len ; i++) {
serialWrite(smartAudioSerialPort, buf[i]); serialWrite(smartAudioSerialPort, buf[i]);
} }
#ifdef USE_AKK_SMARTAUDIO #ifdef USE_AKK_SMARTAUDIO
serialWrite(smartAudioSerialPort, 0x00); // AKK/RDQ SmartAudio devices can expect an extra byte due to manufacturing errors. serialWrite(smartAudioSerialPort, 0x00); // AKK/RDQ SmartAudio devices can expect an extra byte due to manufacturing errors.
#endif // USE_AKK_SMARTAUDIO #endif // USE_AKK_SMARTAUDIO
saStat.pktsent++; saStat.pktsent++;
} else { } else {