Skip to content

Commit

Permalink
Dshot Programming Mode
Browse files Browse the repository at this point in the history
  • Loading branch information
AlkaMotors committed Jan 30, 2025
1 parent ea6b507 commit 97c5066
Show file tree
Hide file tree
Showing 19 changed files with 147 additions and 49 deletions.
4 changes: 2 additions & 2 deletions Mcu/e230/Inc/serial_telemetry.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm);

void telem_UART_Init(void);
void send_telem_DMA();
void send_telem_DMA(uint8_t bytes);

void telem_UART_Init_CH4(void);
void send_telem_DMA_CH4();
void makeInfoPacket(void);

#endif /* SERIAL_TELEMETRY_H_ */
14 changes: 11 additions & 3 deletions Mcu/e230/Src/serial_telemetry.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
#include "serial_telemetry.h"

#include "main.h"
#include "common.h"

uint8_t aTxBuffer[10];
uint8_t aTxBuffer[49];
uint8_t nbDataToTransmit = sizeof(aTxBuffer);

void telem_UART_Init(void)
Expand Down Expand Up @@ -56,13 +57,13 @@ void telem_UART_Init(void)
usart_enable(USART0);
}

void send_telem_DMA()
void send_telem_DMA(uint8_t bytes)
{ // set data length and enable channel to start transfer

usart_receive_config(USART0, USART_TRANSMIT_DISABLE);
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
dma_channel_disable(DMA_CH1);
DMA_CHCNT(DMA_CH1) = nbDataToTransmit;
DMA_CHCNT(DMA_CH1) = bytes;
usart_dma_transmit_config(USART0, USART_DENT_ENABLE);
dma_channel_enable(DMA_CH1);
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
Expand All @@ -87,6 +88,13 @@ uint8_t get_crc8(uint8_t* Buf, uint8_t BufLen)
return (crc);
}

void makeInfoPacket(){
for(int i = 0;i < 48; i++){
aTxBuffer[i] = eepromBuffer.buffer[i];
}
aTxBuffer[48] = get_crc8(aTxBuffer, 48);
}

void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm)
{
Expand Down
4 changes: 2 additions & 2 deletions Mcu/f031/Inc/serial_telemetry.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm);

void telem_UART_Init(void);
void send_telem_DMA();
void send_telem_DMA(uint8_t bytes);

void telem_UART_Init_CH4(void);
void send_telem_DMA_CH4();
void makeInfoPacket(void);

#endif /* SERIAL_TELEMETRY_H_ */
14 changes: 11 additions & 3 deletions Mcu/f031/Src/serial_telemetry.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@
*/

#include "serial_telemetry.h"
#include "common.h"

uint8_t aTxBuffer[10];
uint8_t aTxBuffer[49];
uint8_t nbDataToTransmit = sizeof(aTxBuffer);

void telem_UART_Init(void)
Expand Down Expand Up @@ -77,11 +78,11 @@ void telem_UART_Init(void)
// NVIC_EnableIRQ(DMA1_Channel4_5_IRQn);
}

void send_telem_DMA()
void send_telem_DMA(uint8_t bytes)
{
LL_DMA_DisableChannel(DMA1, LL_DMA_CHANNEL_4);
LL_USART_SetTransferDirection(USART1, LL_USART_DIRECTION_TX);
LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_4, nbDataToTransmit);
LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_4, bytes);
LL_USART_EnableDMAReq_TX(USART1);

LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_4);
Expand All @@ -106,6 +107,13 @@ uint8_t get_crc8(uint8_t* Buf, uint8_t BufLen)
return (crc);
}

void makeInfoPacket(){
for(int i = 0;i < 48; i++){
aTxBuffer[i] = eepromBuffer.buffer[i];
}
aTxBuffer[48] = get_crc8(aTxBuffer, 48);
}

void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm)
{
Expand Down
4 changes: 2 additions & 2 deletions Mcu/f051/Inc/serial_telemetry.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm);

void telem_UART_Init(void);
void send_telem_DMA();
void send_telem_DMA(uint8_t bytes);

void telem_UART_Init_CH4(void);
void send_telem_DMA_CH4();
void makeInfoPacket(void);

#endif /* SERIAL_TELEMETRY_H_ */
20 changes: 13 additions & 7 deletions Mcu/f051/Src/serial_telemetry.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
*/

#include "serial_telemetry.h"

#include "common.h"
#include "targets.h"

uint8_t aTxBuffer[10];
uint8_t aTxBuffer[49];
uint8_t nbDataToTransmit = sizeof(aTxBuffer);

#ifdef USE_PA14_TELEMETRY
Expand Down Expand Up @@ -76,11 +76,11 @@ void telem_UART_Init(void)
LL_DMA_EnableIT_TE(DMA1, LL_DMA_CHANNEL_4);
}

void send_telem_DMA()
void send_telem_DMA(uint8_t bytes)
{ // set data length and enable channel to start transfer
LL_USART_SetTransferDirection(USART2, LL_USART_DIRECTION_TX);
// GPIOB->OTYPER &= 0 << 6;
LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_4, nbDataToTransmit);
LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_4, bytes);
LL_USART_EnableDMAReq_TX(USART2);

LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_4);
Expand Down Expand Up @@ -151,11 +151,10 @@ void telem_UART_Init(void)
LL_DMA_EnableIT_TE(DMA1, LL_DMA_CHANNEL_2);
}

void send_telem_DMA()
void send_telem_DMA(uint8_t bytes)
{ // set data length and enable channel to start transfer
LL_USART_SetTransferDirection(USART1, LL_USART_DIRECTION_TX);
// GPIOB->OTYPER &= 0 << 6;
LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_2, nbDataToTransmit);
LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_2, bytes);
LL_USART_EnableDMAReq_TX(USART1);

LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_2);
Expand All @@ -182,6 +181,13 @@ uint8_t get_crc8(uint8_t* Buf, uint8_t BufLen)
return (crc);
}

void makeInfoPacket(){
for(int i = 0;i < 48; i++){
aTxBuffer[i] = eepromBuffer.buffer[i];
}
aTxBuffer[48] = get_crc8(aTxBuffer, 48);
}

void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm)
{
Expand Down
4 changes: 2 additions & 2 deletions Mcu/f415/Inc/serial_telemetry.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm);

void telem_UART_Init(void);
void send_telem_DMA();
void send_telem_DMA(uint8_t bytes);

void telem_UART_Init_CH4(void);
void send_telem_DMA_CH4();
void makeInfoPacket(void);

#endif /* SERIAL_TELEMETRY_H_ */
14 changes: 11 additions & 3 deletions Mcu/f415/Src/serial_telemetry.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@
*/

#include "serial_telemetry.h"
#include "common.h"

uint8_t aTxBuffer[10];
uint8_t aTxBuffer[49];
uint8_t nbDataToTransmit = sizeof(aTxBuffer);

void send_telem_DMA()
void send_telem_DMA(uint8_t bytes)
{ // set data length and enable channel to start transfer
DMA1_CHANNEL4->dtcnt = nbDataToTransmit;
DMA1_CHANNEL4->dtcnt = bytes;
DMA1_CHANNEL4->ctrl_bit.chen = TRUE;
}

Expand All @@ -34,6 +35,13 @@ uint8_t get_crc8(uint8_t* Buf, uint8_t BufLen)
return (crc);
}

void makeInfoPacket(){
for(int i = 0;i < 48; i++){
aTxBuffer[i] = eepromBuffer.buffer[i];
}
aTxBuffer[48] = get_crc8(aTxBuffer, 48);
}

void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm)
{
Expand Down
6 changes: 2 additions & 4 deletions Mcu/f421/Inc/serial_telemetry.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,7 @@ void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm);

void telem_UART_Init(void);
void send_telem_DMA();

void telem_UART_Init_CH4(void);
void send_telem_DMA_CH4();
void makeInfoPacket(void);
void send_telem_DMA(uint8_t bytes);

#endif /* SERIAL_TELEMETRY_H_ */
14 changes: 11 additions & 3 deletions Mcu/f421/Src/serial_telemetry.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@
// */

#include "serial_telemetry.h"
#include "common.h"

uint8_t aTxBuffer[10];
uint8_t aTxBuffer[49];
uint8_t nbDataToTransmit = sizeof(aTxBuffer);

void send_telem_DMA()
void send_telem_DMA(uint8_t bytes)
{ // set data length and enable channel to start transfer
DMA1_CHANNEL2->dtcnt = nbDataToTransmit;
DMA1_CHANNEL2->dtcnt = bytes;
DMA1_CHANNEL2->ctrl_bit.chen = TRUE;
}

Expand All @@ -34,6 +35,13 @@ uint8_t get_crc8(uint8_t* Buf, uint8_t BufLen)
return (crc);
}

void makeInfoPacket(){
for(int i = 0;i < 48; i++){
aTxBuffer[i] = eepromBuffer.buffer[i];
}
aTxBuffer[48] = get_crc8(aTxBuffer, 48);
}

void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm)
{
Expand Down
3 changes: 2 additions & 1 deletion Mcu/g071/Inc/serial_telemetry.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm);

void telem_UART_Init(void);
void send_telem_DMA();
void send_telem_DMA(uint8_t bytes);
void makeInfoPacket(void);

#endif /* SERIAL_TELEMETRY_H_ */
14 changes: 11 additions & 3 deletions Mcu/g071/Src/serial_telemetry.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@

#include "serial_telemetry.h"
#include "targets.h"
#include "common.h"

uint8_t aTxBuffer[10];
uint8_t aTxBuffer[49];
uint8_t nbDataToTransmit = sizeof(aTxBuffer);

void telem_UART_Init()
Expand Down Expand Up @@ -78,11 +79,11 @@ void telem_UART_Init()
LL_DMA_EnableIT_TE(DMA1, LL_DMA_CHANNEL_3);
}

void send_telem_DMA()
void send_telem_DMA(uint8_t bytes)
{ // set data length and enable channel to start transfer
LL_USART_SetTransferDirection(USART1, LL_USART_DIRECTION_TX);
// GPIOB->OTYPER &= 0 << 6;
LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_3, nbDataToTransmit);
LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_3, bytes);
LL_USART_EnableDMAReq_TX(USART1);

LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_3);
Expand All @@ -107,6 +108,13 @@ uint8_t get_crc8(uint8_t* Buf, uint8_t BufLen)
return (crc);
}

void makeInfoPacket(){
for(int i = 0;i < 48; i++){
aTxBuffer[i] = eepromBuffer.buffer[i];
}
aTxBuffer[48] = get_crc8(aTxBuffer, 48);
}

void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm)
{
Expand Down
3 changes: 2 additions & 1 deletion Mcu/g431/Inc/serial_telemetry.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm);

void telem_UART_Init(void);
void send_telem_DMA();
void send_telem_DMA(uint8_t bytes);
void makeInfoPacket(void);

#endif /* SERIAL_TELEMETRY_H_ */
14 changes: 11 additions & 3 deletions Mcu/g431/Src/serial_telemetry.c
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@
*/

#include "serial_telemetry.h"
#include "common.h"

uint8_t aTxBuffer[10];
uint8_t aTxBuffer[49];
uint8_t nbDataToTransmit = sizeof(aTxBuffer);

void telem_UART_Init()
Expand Down Expand Up @@ -78,11 +79,11 @@
LL_DMA_EnableIT_TE(DMA1, LL_DMA_CHANNEL_3);
}

void send_telem_DMA()
void send_telem_DMA(uint8_t bytes)
{ // set data length and enable channel to start transfer
LL_USART_SetTransferDirection(USART1, LL_USART_DIRECTION_TX);
// GPIOB->OTYPER &= 0 << 6;
LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_3, nbDataToTransmit);
LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_3, bytes);
LL_USART_EnableDMAReq_TX(USART1);

LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_3);
Expand All @@ -109,6 +110,13 @@
return (crc);
}

void makeInfoPacket(){
for(int i = 0;i < 48; i++){
aTxBuffer[i] = eepromBuffer.buffer[i];
}
aTxBuffer[48] = get_crc8(aTxBuffer, 48);
}

void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm)
{
Expand Down
4 changes: 2 additions & 2 deletions Mcu/l431/Inc/serial_telemetry.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ void makeTelemPackage(uint8_t temp, uint16_t voltage, uint16_t current,
uint16_t consumption, uint16_t e_rpm);

void telem_UART_Init(void);
void send_telem_DMA();
void send_telem_DMA(uint8_t bytes);

void telem_UART_Init_CH4(void);
void send_telem_DMA_CH4();
void makeInfoPacket(void);

#endif /* SERIAL_TELEMETRY_H_ */
Loading

0 comments on commit 97c5066

Please sign in to comment.