Thread Tools
Mar 10, 2011, 08:23 AM
Registered User
The actual transmissions should look something like this link. Two timeframes are shown under the 'serial' section. http://www.flyelectric.org.uk/serial.htm
dt.
Sign up now
to remove ads between posts
Mar 10, 2011, 11:11 AM
Registered User
Ok,

I think I figured it out: obviously my transmitter (a MC24 module) sends data frames every 11 ms (checked by oscilloscope). According to this discussion https://www.rcgroups.com/forums/show...1284843&page=7 there are no synchronization chars in this mode. I wrote a short java programm to analyze the incoming data and came to the following protocol:

EE Ch3Ch3 Ch2Ch3 Ch1Ch1 Ch5Ch5 Ch0Ch0 Ch4Ch4 Ch6Ch6 || EE Ch7Ch7 ?? FF FF FF FF FF


Where
- 'E' seems to be some kind of an error counter since it increases after having switched off and on the Tx
- Chx are the channel numbers and values (xxNNNNVV VVVVVVVV). According to the specifications, the channel values should be 11 bit wide, I'm still working on where to find the 11th bit
- '?' here the channel number seems to be 8, but the value makes no sense
- 'FF' these bytes are used by transmitters with more than 8 channels, I guess.


best regards,
Jan
Last edited by jahibo; Mar 10, 2011 at 11:18 AM.
Mar 10, 2011, 11:21 AM
Registered User
Great. Now you need to generate test data. For example, set your Gear channel to max throws and capture data with the switch at both extremes. Do the same with say Rudder and capture both extremes and centre (with trims neutral). Then you will know how many bits you have. I see 10.
dt.
Mar 10, 2011, 01:44 PM
Registered User
Hi,

you're right, the maximum range seems to be [0, 1024]. I thought that there were only 2 modes:
1) 1000/22ms frame rate, 10 bit resolution
2) 1000/11ms frame rate, 11 bit resolution

best regards,
Jan
Mar 10, 2011, 02:00 PM
Registered User
Good progress. I think there are quite a few permutations. If a channel number makes no sense then you need to look closer at the individual bits to see if there is an extra attribute/different structure for that byte.
dt.
Feb 20, 2016, 01:23 PM
Registered User

Reading data frame from Spektrum


Hello everybody,

I found your thread 'Sub 1.5 gram Actuator Drive Spread Spectrum is here' very interesting as I am trying to read the signal from a Spektrum DX7 from the receiver SPM9545 (HA412X).

My intention is to input the data frame into an Arduino Uno R3 using the SoftwareSerial library that allows to use any digital pin for an extra serial com (the main serial com is reserved for USB programming).

I have first inspected the signal thanks to a SALEAE logic analyser, the 'Logic Pro 8'. See link here:

https://www.saleae.com/

With the analyser I can pretty well decode the signal, find the 2 synchro bytes, identify the 7 channels (2 bytes per channel) and determine the value ranges. The frames are separated from around 20-21 ms.

I attach a screenshot of the measure where you can see the digital record (channel 0 on top) and the analog record (channel 1 bottom).


1. my first comment concerns the synchro bytes. When I started to read the data, I found 0x002D and a few days later (still now): 0x0000. In your post you found 0x0301 for the DX7.

Can the synchro change in time?


2. my second comment concerns the position of the data as I found it different than in your post:


AIL
FLP
ELV
GEA
RUD
AUX
THR

In addition, the values (extremes) are different from your post. In particular, all values are positive.
I don't know if this sounds correct or not.

3. now the hard point.
I am trying to input the signal directly on a digital pin of the Arduino.
I power the SPM9545 with the 3.3V from Arduino.

In accordance with the documentation:

https://www.arduino.cc/en/Reference/Constants

a voltage of 3V or more translates into a HIGH and a voltage below 3V is translated into LOW.

The measure of the input signal gives a HIGH level at 3.1 to 3.2V and a LOW at 0.18 to 0.45V, roughly.

When I read the data by the ARDUINO and echo them on the monitor,

a) I don't find a synchro as 0x0000 but 0x8080.

b) I don't find in total 16 bytes (2 sync + 14 data) but 13 (2 sync + 11 data).

c) the data are messed up in the frame. I can clearly see the influence of change in the manual inputs (sticks, switches) but it is hard to allocate to bytes as it looks that bytes are 'overlapping'.

Do you think that the electric level is too low or limit? If yes, can you advise a way to correct this.

Have you had any such experience?


Thank you for your support.

JM
Feb 21, 2016, 01:29 AM
Registered User
Hello everybody,

I found your thread 'Sub 1.5 gram Actuator Drive Spread Spectrum is here' very interesting as I am trying to read the signal from a Spektrum DX7 from the receiver SPM9545 (HA412X).

My intention is to input the data frame into an Arduino Uno R3 using the SoftwareSerial library that allows to use any digital pin for an extra serial com (the main serial com is reserved for USB programming).

I have first inspected the signal thanks to a SALEAE logic analyser, the 'Logic Pro 8'. See link here:

https://www.saleae.com/

With the analyser I can pretty well decode the signal, find the 2 synchro bytes, identify the 7 channels (2 bytes per channel) and determine the value ranges. The frames are separated from around 20-21 ms.

I attach a screenshot of the measure where you can see the digital record (channel 0 on top) and the analog record (channel 1 bottom).


1. my first comment concerns the synchro bytes. When I started to read the data, I found 0x002D and a few days later (still now): 0x0000. In your post you found 0x0301 for the DX7.

Can the synchro change in time?


2. my second comment concerns the position of the data as I found it different than in your post:


AIL
FLP
ELV
GEA
RUD
AUX
THR

In addition, the values (extremes) are different from your post. In particular, all values are positive.
I don't know if this sounds correct or not.

3. now the hard point.
I am trying to input the signal directly on a digital pin of the Arduino.
I power the SPM9545 with the 3.3V from Arduino.

In accordance with the documentation:

https://www.arduino.cc/en/Reference/Constants

a voltage of 3V or more translates into a HIGH and a voltage below 3V is translated into LOW.

The measure of the input signal gives a HIGH level at 3.1 to 3.2V and a LOW at 0.18 to 0.45V, roughly.

When I read the data by the ARDUINO and echo them on the monitor,

a) I don't find a synchro as 0x00 0x00 but 0x80 0x80.

b) I don't find in total 16 bytes (2 sync + 14 data) but 13 (2 sync + 11 data).

c) the data are messed up in the frame. I can clearly see the influence of change in the manual inputs (sticks, switches) but it is hard to allocate to bytes as it looks that bytes are 'overlapping'.

Do you think that the electric level is too low or limit? If yes, can you advise a way to correct this.

Have you had any such experience?


Thank you for your support.

JM


Quick Reply
Message:

Thread Tools

Similar Threads
Category Thread Thread Starter Forum Replies Last Post
Video 1.5 Gram Living Room Flyer! micromad Electric Plane Talk 2 Jul 29, 2008 09:29 PM
Yippee! 1.5 gram 3ch plane david_dewit Scratchbuilt Indoor and Micro Models 169 Apr 25, 2008 07:14 PM
Sub 1.5 gr 3 Channel Biplane from Lad (St.Petersburg, Russia) Lad Scratchbuilt Indoor and Micro Models 46 May 03, 2005 01:46 AM
FS: Omega 1.5 and Kontronik Drive 200 NickW Aircraft - Electric - Airplanes (FS/W) 4 Apr 21, 2003 04:59 PM