The MC12311 is a highly-integrated, cost-effective, system-in-package (SIP), sub-1GHz wireless node solution with an FSK, GFSK, MSK, or OOK modulation-capable transceiver and low-power HCS08 8-bit microcontroller. The highly integrated RF transceiver operates over a wide frequency range including 315 MHz, 433 MHz, 470 MHz, 868 MHz, 915 MHz, 928 MHz, and 955 MHz in the license-free Industrial, Scientific and Medical (ISM) frequency bands.
The MPXY8600 is a sensor for use in applications that monitor tire pressure and temperature. It contains the pressure and temperature sensors, an X-axis and a Z-axis accelerometer, a microcontroller, an LF receiver and an RF transmitter all within a single package.
This document offer customers to utilize Freescale MPXY8600 as transmitter and MC12311 as receiver to form 315MHz, 433.92MHz TPMS transmitter and receiver solution.
Thanks for the documentation. It is really helpful.
I would appreciate if you provide the source codes, if possible. :smileyhappy:
Indeed... thanks Tzyy-Hong; this is very helpful.
I think the MC12311 reference manual is not perfectly clear. The packet formatting discussion seems to imply that a Syncword is mandatory... but yet you can turn the Syncword off in RegSyncConfig.
It would be nice to turn the Syncword off while developing the antenna hardware in order to allow "easier" reception.
Can you share your register settings, specifically for the radio settings (Fdev, RxBw, etc)?
I have an FXTH87 transmitter and the MC12311 evaluation board for receiving but it is not detecting packets.
Can you provide suggestions to make sure my RF link is configured properly?
Fdev, RxBW, Frequency, data format(NRZ or Manchester), preamble, sync of both side( MC12311 and FXTH87) need to be configured.
List below is MC12311 setting. I changed "gDefaultRfFreq_c","gDefaultBitRate_c","gDefaultFreqDv_c","gDefaultDccFreq_c","gDefaultRxFilterBw_c".
/* Default Radio Registers Values */
#define gDefaultOperationMode_c ( OpMode_StandBy )
//#define gDefaultRfFreq_c ( 0xE4C000 )
#define gDefaultRfFreq_c ( 0x6C7FFB )
//#define gDefaultBitRate_c ( 0x1A0B ) //4800
#define gDefaultBitRate_c ( 0x0D05 ) //9600
//#define gDefaultFreqDv_c ( 0x0052 ) //5KHz
#define gDefaultFreqDv_c ( 0x0333 ) //50KHz
#define gDefaultSequencer_c ( OpMode_Sequencer_On )
#define gDefaultDataMode_c ( DataModul_DataMode_Packet )
#define gDefaultModulationType_c ( DataModul_Modulation_Fsk )
#define gDefaultModulationShaping_c ( DataModul_ModulationShaping_NoShaping )
#define gDefaultPowerAmpMode_c ( PaLevel_Pa0_On )
#define gDefaultPaRamp_c ( 0x09 )
//#define gDefaultDccFreq_c ( DccFreq_2 )
#define gDefaultDccFreq_c ( DccFreq_6 )
//#define gDefaultRxFilterBw_c ( RxBw_10400 )
#define gDefaultRxFilterBw_c ( RxBw_62500 )
#define gDefaultDccFreqAfc_c ( DccFreq_4 )
#define gDefaultRxFilterBwAfc_c ( RxBw_50000 )
#define gDefaultOokThresType_c ( OokThreshType_Peak )
Thanks again THC. I think there is a bug in the Radio Utility code generated from BeeKit v3.0.2; or maybe this is a "feature" that I don't understand.
Since the FXTH87 does not generate a CRC using the same method as the MC12311, I'm under the impression that CRC checking will always fail. Since CRC won't work, I disabled it by writing to RegPacketConfig1. Upon doing so the Radio Utility will not indicate received packets. When I go back into RegPacketConfig1 and re-enable CRC, the Radio Utility works normally and will indicate the received packets by showing the received content and the number of received packets. With these observations, I was under the impression that the MC12311 was not receiving packets when CRC was disabled.
After studying your document posted here I noticed you were indicating the received packets both in CW and in the Radio Utility... so I decided to do a test. With CRC disabled and both CW and the Radio Utility monitoring packets, only CW showed the received packets. For some reason, when CRC is disabled, the UART is not communicating packets to the Radio Utility. This was a very frustrating bug that made me waste a lot of time believing that packets were not being received.
What version of BeeKit are you using?
Also, it looks like your smacPdu does not contain a 0xFF destination address. How are you accomplishing this? In my codebase (from BeeKit v3.0.2) the smacPdu seems to be hardcoded to always contain the destination address as shown:
typedef struct smacPdu_tag
Yes, correct. You encountered the problem which I met before. Radio utility code will check packet counts, so it needs to be do some modification at utility code to receive packet from FXTH87 or 8600.
Instead of continuing using radio utility, you may use the code which I sent you before. You needn't radio utility and you can receive FXTH87 data from MC12311 EVB through hyperterminal(19200, 8. N, 1, none). I think that will be convenient for you.
The existing code which I set use CRC-disabled.
I really appreciate the help. With the Radio Utility out of the loop, the system is working great. I'm able to configure arbitrary packets at the FXTH87 and the MC12311 receives them quite well. The MC12311 is actually very easy to work with and seems pretty robust.
That is a good news.