From e0365df6ddce0f3357ca3dae4e9bfdc391129a2c Mon Sep 17 00:00:00 2001 From: Pascal Langer Date: Mon, 20 Nov 2017 18:24:28 +0100 Subject: [PATCH 1/5] StmMultiUSB bootloader --- BootLoaders/StmMultiUSB/README.md | 2 ++ BootLoaders/StmMultiUSB/StmMultiUSB.bin | Bin 0 -> 7184 bytes 2 files changed, 2 insertions(+) create mode 100644 BootLoaders/StmMultiUSB/README.md create mode 100644 BootLoaders/StmMultiUSB/StmMultiUSB.bin diff --git a/BootLoaders/StmMultiUSB/README.md b/BootLoaders/StmMultiUSB/README.md new file mode 100644 index 0000000..52c5a52 --- /dev/null +++ b/BootLoaders/StmMultiUSB/README.md @@ -0,0 +1,2 @@ +[Source for the StmMultiUSB=STM32duino-bootloader](https://github.com/rogerclarkmelbourne/STM32duino-bootloader) +If you want the latest version, you should look for the file generic_boot20_pa1.bin. \ No newline at end of file diff --git a/BootLoaders/StmMultiUSB/StmMultiUSB.bin b/BootLoaders/StmMultiUSB/StmMultiUSB.bin new file mode 100644 index 0000000000000000000000000000000000000000..e8da0d68ea3d3264671e1fe2ca7f16343989ac2d GIT binary patch literal 7184 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 literal 0 HcmV?d00001 From 65a5c37ffb1f56094a96325090c70b19cc2c0667 Mon Sep 17 00:00:00 2001 From: pascallanger Date: Mon, 20 Nov 2017 18:26:46 +0100 Subject: [PATCH 2/5] Update Compiling_STM32.md --- docs/Compiling_STM32.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/Compiling_STM32.md b/docs/Compiling_STM32.md index 82c5c02..58809af 100644 --- a/docs/Compiling_STM32.md +++ b/docs/Compiling_STM32.md @@ -77,7 +77,7 @@ See below my module for reference This method use USB connector on the STM32 V1.0 board or on the maple clone board. 1. Install first maple USB driver by running the batch file found in Arduino STM32 package folder ```..\hardware\Arduino_STM32\drivers\win\install_drivers.bat``` -1. Download the free STM32 flash loader demonstrator from [ST.com](http://www.st.com/en/development-tools/flasher-stm32.html) and using a USB-TTL device (like FTDI cable) flash the STM32duino bootloader available from Roger Clark's great STM32 site [here](https://github.com/rogerclarkmelbourne/STM32duino-bootloader/tree/master/STM32F1/binaries) .Use bootloader **generic_boot20_pa1.bin** +1. Download the free STM32 flash loader demonstrator from [ST.com](http://www.st.com/en/development-tools/flasher-stm32.html) and use a USB-TTL device (like FTDI cable) to flash the [StmMultiUSB.bin](https://github.com/pascallanger/DIY-Multiprotocol-TX-Module/raw/master/BootLoaders/StmMultiUSB/StmMultiUSB.bin) bootloader. 1. Open Arduino IDE,browse to multiprotocol folder,load the sketch multiprotocol.ino.Select the serial COM port(see notes below) 1. In Arduino IDE under "Upload method" select **STM32duino**-bootloader.Click upload ,wait until upload is complete. From b15a5d4a45f3cef5607c017085e0e86ee525f749 Mon Sep 17 00:00:00 2001 From: Pascal Langer Date: Mon, 20 Nov 2017 19:12:37 +0100 Subject: [PATCH 3/5] Flysky and Assan output map --- Multiprotocol/ASSAN_nrf24l01.ino | 6 +++++- Multiprotocol/FlySky_a7105.ino | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Multiprotocol/ASSAN_nrf24l01.ino b/Multiprotocol/ASSAN_nrf24l01.ino index d5c2090..2435bab 100644 --- a/Multiprotocol/ASSAN_nrf24l01.ino +++ b/Multiprotocol/ASSAN_nrf24l01.ino @@ -53,7 +53,11 @@ void ASSAN_send_packet() uint16_t temp; for(uint8_t i=0;i<8;i++) { - temp=Servo_data[i]<<3; + if(mode_select != MODE_SERIAL) // If in PPM mode extend the output to 1000...2000µs + temp=convert_channel_16b_nolim(i,1000,2000); + else + temp=Servo_data[i]; + temp<<=3; packet[2*i]=temp>>8; packet[2*i+1]=temp; } diff --git a/Multiprotocol/FlySky_a7105.ino b/Multiprotocol/FlySky_a7105.ino index 29c01aa..6a70f03 100644 --- a/Multiprotocol/FlySky_a7105.ino +++ b/Multiprotocol/FlySky_a7105.ino @@ -133,7 +133,7 @@ static void __attribute__((unused)) flysky_build_packet(uint8_t init) { uint8_t i; //servodata timing range for flysky. - ////-100% =~ 0x03e8//=1000us(min) + //-100% =~ 0x03e8//=1000us(min) //+100% =~ 0x07ca//=1994us(max) //Center = 0x5d9//=1497us(center) //channel order AIL;ELE;THR;RUD;AUX1;AUX2;AUX3;AUX4 @@ -147,6 +147,8 @@ static void __attribute__((unused)) flysky_build_packet(uint8_t init) uint16_t temp=Servo_data[CH_AETR[i]]; if(sub_protocol == CX20 && CH_AETR[i] == ELEVATOR) temp=servo_mid-temp; //reverse channel + if(mode_select != MODE_SERIAL) //if in PPM mode extend the output to 1000...2000µs + temp=map(temp,servo_min_100,servo_max_100,1000,2000); packet[5 + i*2]=temp&0xFF; //low byte of servo timing(1000-2000us) packet[6 + i*2]=(temp>>8)&0xFF; //high byte of servo timing(1000-2000us) } From a95fd1e1d8e0122ae6cc7f0312f02eb0a125577e Mon Sep 17 00:00:00 2001 From: Pascal Langer Date: Mon, 20 Nov 2017 21:58:01 +0100 Subject: [PATCH 4/5] SFHSS sub protocols --- Multiprotocol/Multi.txt | 2 +- Multiprotocol/Multiprotocol.h | 12 ++++++++++++ Multiprotocol/SFHSS_cc2500.ino | 13 ++++++++++--- Multiprotocol/_Config.h | 5 ++++- 4 files changed, 27 insertions(+), 5 deletions(-) diff --git a/Multiprotocol/Multi.txt b/Multiprotocol/Multi.txt index 9d499cf..bb76f7e 100644 --- a/Multiprotocol/Multi.txt +++ b/Multiprotocol/Multi.txt @@ -18,7 +18,7 @@ 18,MJXq,WLH08,X600,X800,H26D,E010,H26WH 19,Shenqi 20,FY326,FY326,FY319 -21,SFHSS +21,SFHSS,XK,T8J,T10J,TM-FH 22,J6PRO 23,FQ777 24,ASSAN diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h index e161833..b12e03e 100644 --- a/Multiprotocol/Multiprotocol.h +++ b/Multiprotocol/Multiprotocol.h @@ -196,6 +196,13 @@ enum Q303 CX10D = 2, CX10WD = 3, }; +enum SFHSS +{ + XK = 0, + T10J = 1, + T8J = 2, + TM_FH = 3, +}; #define NONE 0 #define P_HIGH 1 @@ -585,6 +592,11 @@ Serial: 100000 Baud 8e2 _ xxxx xxxx p -- CX35 1 CX10D 2 CX10WD 3 + sub_protocol==SFHSS + XK 0 + T10J 1 + T8J 2 + TM_FH 3 Power value => 0x80 0=High/1=Low Stream[3] = option_protocol; diff --git a/Multiprotocol/SFHSS_cc2500.ino b/Multiprotocol/SFHSS_cc2500.ino index 56aa6cd..960352f 100644 --- a/Multiprotocol/SFHSS_cc2500.ino +++ b/Multiprotocol/SFHSS_cc2500.ino @@ -155,17 +155,24 @@ static void __attribute__((unused)) SFHSS_build_data_packet() // Values grow down and to the right. static void __attribute__((unused)) SFHSS_build_data_packet() { + const uint8_t SFHSS_ident[4][3]={ + { 0x81, 0x00, 0x00}, //XK + { 0x81, 0x42, 0x07}, //T8J + { 0x81, 0x0F, 0x09}, //T10J + { 0x82, 0x9A, 0x06} //TM-FH + }; + uint8_t ch_offset = phase == SFHSS_DATA1 ? 0 : 4; uint16_t ch1 = convert_channel_16b_nolim(CH_AETR[ch_offset+0],2020,1020); uint16_t ch2 = convert_channel_16b_nolim(CH_AETR[ch_offset+1],2020,1020); uint16_t ch3 = convert_channel_16b_nolim(CH_AETR[ch_offset+2],2020,1020); uint16_t ch4 = convert_channel_16b_nolim(CH_AETR[ch_offset+3],2020,1020); - packet[0] = 0x81; // can be 80 or 81 for Orange, only 81 for XK + packet[0] = SFHSS_ident[sub_protocol][0]; // can be 80 or 81 for Orange packet[1] = rx_tx_addr[0]; packet[2] = rx_tx_addr[1]; - packet[3] = 0x0f; //10J - packet[4] = 0x09; //10J + packet[3] = SFHSS_ident[sub_protocol][1]; + packet[4] = SFHSS_ident[sub_protocol][2]; packet[5] = (rf_ch_num << 3) | ((ch1 >> 9) & 0x07); packet[6] = (ch1 >> 1); packet[7] = (ch1 << 7) | ((ch2 >> 5) & 0x7F ); diff --git a/Multiprotocol/_Config.h b/Multiprotocol/_Config.h index ba1fcc6..e663438 100644 --- a/Multiprotocol/_Config.h +++ b/Multiprotocol/_Config.h @@ -368,7 +368,10 @@ const PPM_Parameters PPM_prot[15]= { FY326 FY319 MODE_SFHSS - NONE + XK + T10J + T8J + TM_FH MODE_J6PRO NONE MODE_FQ777 From 35089febabfb792d5411d43d2144d5831cf27708 Mon Sep 17 00:00:00 2001 From: Pascal Langer Date: Mon, 20 Nov 2017 22:02:14 +0100 Subject: [PATCH 5/5] SFHSS subprotocols --- Multiprotocol/Multiprotocol.h | 2 +- Protocols_Details.md | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Multiprotocol/Multiprotocol.h b/Multiprotocol/Multiprotocol.h index b12e03e..c55bb34 100644 --- a/Multiprotocol/Multiprotocol.h +++ b/Multiprotocol/Multiprotocol.h @@ -19,7 +19,7 @@ #define VERSION_MAJOR 1 #define VERSION_MINOR 1 #define VERSION_REVISION 6 -#define VERSION_PATCH_LEVEL 23 +#define VERSION_PATCH_LEVEL 24 //****************** // Protocols //****************** diff --git a/Protocols_Details.md b/Protocols_Details.md index cc4b91d..e5eda9c 100644 --- a/Protocols_Details.md +++ b/Protocols_Details.md @@ -209,6 +209,18 @@ CH1|CH2|CH3|CH4|CH5|CH6|CH7|CH8 ---|---|---|---|---|---|---|--- A|E|T|R|CH5|CH6|CH7|CH8 +### Sub_protocol XK - *0* +XK transmitter + +### Sub_protocol T8J - *1* +Futaba T8J transmitter + +### Sub_protocol T10J - *2* +Futaba T10J transmitter + +### Sub_protocol TM-FH - *3* +Futaba TM-FH transmitter + *** # CYRF6936 RF Module