Hey crew,
Trying to figure out a little bit how the CC11xx core behaves when receiving Manchester encoding. Going between two CC radios using SimpliciTi seems to be no problem, but I'm trying to interface with a legacy system, and need to know more about the inner workings of the ME feature. The datasheet doesn't explain how it behaves, and it seems that even TI employees don't quite understand how it behaves. It seems that my best option right now is to use Sverre's trick, and manually decode the Manchester encoding. I have heaps of questions, so I'll try and organize them the best I can. To save time, ME == Manchester Encoding
Legacy Packet Format is as follows, with "raw" unencoded bits: (01 == zero, 10 == one)
- Preamble: [0x55, 0x55, 0x55, 0x55]
- Sync Word: [0xA5, 0x5A] (After ME decoding, this becomes 0xC3)
- Fixed Length Packet Data (6 bytes before ME decoding, 3 bytes after)
- Checksum (not TI's implementation, but that's ok, I can handle this in the firmware)
Some questions:
- If I enable ME, I can use the last two preamble bytes as the upper syncword, with Sverre's trick. Assuming the CC11xx uses the GE Thomas format, I should set SYNC1 to 0x00, and SYNC0 to 0xC3? (If not, I just need to logical invert all my bytes -- that should be ok.) In short, what does the CC11xx use for ME? (10 = One), or (01 = One)?
- If I use part of the preamble for the SYNC word, how will this affect the AGC for having enough time to lock onto what's now a 16-bit preamble?
- How does this affect the preamble quality threshold (PQT)? Since the CC11xx encodes the entire packet on transmission, [10101010...] turns into [100110011001...]. However, my legacy system sends [01010101...], which decodes to [00000...]. Will the score be zero because of the back-to-back bits? Or does PQT not take ME into account -- in which case it seems that would break CC to CC comms using PQT?
- How does the CC11xx handle searching for a sync word? If the modem gets hung up one bit off, there will be lots of invalid manchester codes (11 and 00). Will it miss the sync word giving an amortized 50% packet loss, or does it handle "manchester framing issues" nicely?
- If I set the debug to output RX_HARD_DATA on a pin, should I use HARD_DATA[0] or HARD_DATA[1]? I presume the bits that come out will not be manchester decoded...
- It's my understanding that the radio core is shared between the CC1100E, CC1101, CC1110, and CC1111 -- but there are some registers that are different. Is the Manchester behavior consistent between chips?
I think that's all for now. I have a great many other questions about this mysterious chip... but I'll save them for another time.
Thanks in advance for your replies!
- Tim