and was wondering if AFSK modulation could be achieved on Si446x with an MCU, seeing that demodulation is possible. I'd like to use this radio module for AX.25 (Packet radio) and for that I need AFSK 1200baud with 1200Hz and 2400Hz tones. Would that be possible to somehow force the radio to produce a transmission simillar to AFSK that would be properly received by FM receivers?
In SI446X(SI4463) wake on radio applications, the RFChip will send out interrupts when received waked packets from the master devices.
In a very little possibility, the MCU (Our MCU is EFM32G210) may miss the interrupts from the SI446X, hence the SI446X chip will not in sleep mode and waiting for the MCU to get read out the packet, and the MCU miss the interrupt and still keep in sleep mode.
Then the battery may quickly brown out in serveral days.
Because it is hard to catch the case the MCU missing the interrupt, when we found one client device can never be waked up, the battery voltage is about zero!
To prevent the RFChip enter idle status we set the status as followings:
(1) STATE1_RXTIMEOUT_STATE_ENUM_SLEEP
(2) STATE2_RXVALID_STATE_ENUM_SLEEP
(3) STATE3_RXINVALID_STATE_ENUM_RX
If the RFChip works well, then there is no way to enter idle status or keep in RX status to dry out the battery.
But to our surprise there is very little possibility that some nodes may quickly dry out the battery in serveral days. There is no master device sending packets while some nodes may dry out the battery.
We think that the following reason may cause this exception:
(1) The SI446X chip may received a noise or disturbing signal and then exit the sleep status
(2) The SI446X chip switch to idle or Rx status, then the current consumption will be about 13mA
(3) The SI446X chip wait for the MCU to issue comamnds to re-enter sleep status, but the MCU is also in sleep status
Then how to design the mechanism to quickly detect the SI446X chip exit sleep status?
We found if the SI446X chip enters wake on radio mode, it will switch between sleep and RX status, then if we set one GPIO (0/1/2/3) to indicate status, then there will be one pulse output from the GPIO (0/1/2/3).
This pulse may be used as the feed signal for a watchdog timer, if the SI446X chip exit the sleep status and keep in one steady status, such as IDLE or RX status, the the pulse will disappear!
But an external watchdog chip is requied in this mechanism, the internal watchdog timer of the MCU (EFM32G210) can only monitor the software stalemate. It can not monitor the GPIO pulse, especially in sleep status.
Then my question is:
(1) Is there any other mechanism to detect SI446X chip status? it should switch between RX and sleep periodically
(2) If an watchdog timer is required anyway, is it possible to setup another one by the internal TIMER, RTC or LETIMER to function as an external hardware watchdog chip.
If you need any further information please let me informed!
We want to get IQ datas of a 200KHz bandwidth centered at 868.13MHz and do the demodulation with our existing DSP chain (currently implemented in an STM32F4).
The modulation is DBPSK and the datarate is 100bps, so ideally we would like tha IQ samples to be decimated as much as possible to let the most possible time to the MCU for demodulation.
What could be possible with the EFR32? and also does the EFR32 has DSP instructions?
MCU: EFR32FG1P131F256GM48
When using the radio configurator it will not produce a rail_config.c file if the crystal frequency is set to anything other than 38.4 MHz.
The radio module I am using has a 40 MHz quartz on it.
How am I supposed to generate a valid rail_config.c with the proper oscillator settings?
According to all datasheets for the MCU it supports quartz oscillators in the 38-40 MHz range. Why does the datasheet claim this range to be valid if the Software does not support it?
In the Data Sheet (EFR32MG12 Gecko Multi-Protocol Wireless SoC Family Data Sheet ) on page 36 I found the current consumption in receive mode. I am trying to get the same Condition as the Test Condition.
Test Conditions in Datasheet:
802.15.4 receiving frame, F = 2.4 GHz, Radio clock prescaled by 3
Now my question: How can I set the Radio clock prescaler to 3 ?
In picture 12.1 of EFR32xG1 Wireless Gecko Reference Manual I see a HFRADIOCLK register which seems to control the above prescaler. But I cannot find the definition of this register in the SDK. SDK Version 3.1.0, MCU SDK 6.0.0.0.
We are using MCU to control this transceiver and using time syncronisation between nodes. We use 20Kbps data rate and expect for 5Byte preamble 2 byte sync word and 5 byte data to take 4.8ms. But, in practice we observe 9ms before a Tx complete interrupt. We have verified that this is not a MCU polling or other MCU latency. We have verified that SPI speed increase does not help. Can someone help us how we can improve the speed with the same data rate looking at the config file attached.
1) In the Sink example project, I saw in app_cli.c there are these lines:
/// The destination endpoint of the outgoing message
#define DATA_ENDPOINT 1
#define TX_TEST_ENDPOINT 2
and I see that cli_data() sends to DATA_ENDPOINT via EmberMessageSend.
2) In the Sensor example project the EmberMessageSend sends sensor data to endpoint=0. Is there any specific reason to use endpoint=0 in sensor and endpoint=1 in sink? Is it justa matter of convenience and we can use different endpoints in case we need to send to different "parts" of the receiving device?
I have experimented with sending to endpoint=0 from sink to sensor and it has worked too.
I have a design with two ICs, one is a 4467 and the other is a 4362. For the purpose of this test, they're both configured as receivers on two different frequencies. The configuration relies on sync word detection because the preamble is neither standard nor long enough for the options available. Direct mode is used for packet handling.
The MCU periodically issues a START_RX to each IC to restart sync word detection. RX performance is normally pretty good, until sometime late at night, after more than 6 hours of continuous operation, when performance degrades for no apparent reason. RX still functions, but with greatly reduced sensitivity. I have reproduced this on two boards with slightly different circuit designs, so it's not a one-off. Resetting the MCU which shuts down and re-initializes both ICs fixes the issue.
Where do I look? Should I take a periodic snapshot of certain registers to see if something is not right? Which registers should I look at?
The application is AIS, so loss of sensitivity is a show stopper.
I want to configure the thunderboard sense 2 as unmodulated carrier transmitter.
For this reason im using rail_test example in Simplicity Studio 5.
Then i connect the serial console and with commands disable the receiver, set the Tx Power and start the Tx Tone.
My question is how can i program the board from the start as unmodulated carrier transmitter with specific frequency and power (in dB) without the need of any serial commands?
So when i connect the power supply, the board will start to transmit the tone (unmodulated carrier)
Hi all, I'm new to Si wireless so please be kind...
I'm trying to configure a Si4455 on an RF Solutions Zeta board. It's marked 455A, so it should be a B1 version chip, and I want to drive it from a PIC 16F1828 - heresy, but I don't want to learn Keil C and C8051F930 from scratch, and I'm reasonably ok with XC8. Using WDS3 (GUI Version 3.2.9.0 to be precise) I have extracted the radio config file and set up an array, all as per AN^(2, and the Si4455 data sheet, and the Rev B API documentation. But it will not load the configuration. I know it can be done as people have written so in other posts, but how?
I have found that the reset seems ok, CTS and nIRQ go high, but when it attempts to load the config array nIRQ goes low and will not go high again. It may be that the chip doesn't properly enter EZConfig mode, so what am I doing wrongly? How critical is the SDN high period? In various documentation I've seen from10 uS to 300uS? I want to use XC*'s delay routines as my MCU clock isn't the same as the C8051's, and I agree with the todo comments in the source (a better delay timer needed). I wait for CTS to go high, and send the array, the first item being the power-up.
Anyway, specifically:
What's the correct SDN high period?
What's the correct power-up sequence? The AN's don't really tally with the sequence in the config.h file, which put int control enable, frr and eztune before the ezconfig array?
Hello,
I' ve created two extended star networks, one in channel 0 and one in channel 1, and I want to extend this topology into a multi hop network, where sinks would be able to communicate with each other, and send their data.
I changed the data report, so the end nodes and the extenders send only once to sink, also I tell sink to transmit what it just received to the other sink. I guess I can do it if I change the addresses of the sinks, because both have 0x00. I changed the address of the second sink to 0x0A, but when I type the info command at sink's console, I get node id as default again (0x00).
Also, I've tried to transmit using Rail's functions, because the two networks use different channels. But I get no result.
I want to ask if it is feasible to make sinks communicate with each other, also if I can use rail's functions only for sink, using StartTx at the other sink's channel at one sink, and StartRx at the other sink's channel at the second sink. And lastly, if it is nessesary to change the addresses of the sinks for that reason.
we are using the chipset EFR32FG1P131F128GM32.In the simplicity studio we tested the range test program its working fine.what are the programs can i use for Extended star network working please list out & tell me which function will give the neibour node address to central node.
Hi for my application I need to send 1 byte of data each 200 us, after trying different configurations of the packet handler I realized that this is not possible with this approach. So I changed to direct mode and making the packet configuration directly in the MCU, I have had promissing result so far. The 1 way link is no problem, I used the WDS to generate a direct mode RX config file and a direct mode TX config file using the examples and it works! now for my application I need to change from direct mode TX to direct mode RX and vice versa. In order to do so I could just load the configuration files once again but unfurtunatly this takes too long when loading the RX configuration. I compared both configuration files and determined what is the difference between both in order to make 2 subconfiguration files and load just the neccessary parameters but this didn't work as when I do this the data rate changes from 40kbps to 3.6 kbps. What should I do in order to change from direct mode TX to direct mode RX on the fly?
Thanks in advance, I included both configuration files, a configuration file that has the parameters of both TX and RX combined and the bare minumum configurations that I load in order to change from tx to rx and from rx to tx. I'm using the si4463 radio
Forum
Tips for troubleshooting and asking questions
1. Clarify to yourself what the specific issue is.
2. Apply basic troubleshooting:
3. Consult the datasheets and reference manuals. Sources include:
4. Search to see if someone has asked the same question already.
5. If you use custom hardware, try to reproduce the issue on a Silicon Labs kit
6. If you have a big firmware project, try to reproduce the issue on one of the Silicon Labs examples with minimal modification
7. If you have a radio configuration problem, try to reproduce it with RAILTest or WDS
8. Include the relevant parts of your development setup in the problem description. Examples include:
9. Include steps to reproduce the problem or specific conditions the problem occurs in.
10. Be patient and avoid making duplicates of your question.
For general community usage please refer to the Silicon Labs Community Guidelines.
Si446x AFSK modulation?
Hello. Recently I came across this page:
https://www.silabs.com/community/wireless/proprietary/knowledge-base.entry.html/2016/09/08/afsk_signal_demodula-ahV2
and was wondering if AFSK modulation could be achieved on Si446x with an MCU, seeing that demodulation is possible. I'd like to use this radio module for AX.25 (Packet radio) and for that I need AFSK 1200baud with 1200Hz and 2400Hz tones. Would that be possible to somehow force the radio to produce a transmission simillar to AFSK that would be properly received by FM receivers?
How to detect the si446X Interrupt missing in wake on radio (WOR) applications
In SI446X(SI4463) wake on radio applications, the RFChip will send out interrupts when received waked packets from the master devices.
In a very little possibility, the MCU (Our MCU is EFM32G210) may miss the interrupts from the SI446X, hence the SI446X chip will not in sleep mode and waiting for the MCU to get read out the packet, and the MCU miss the interrupt and still keep in sleep mode.
Then the battery may quickly brown out in serveral days.
Because it is hard to catch the case the MCU missing the interrupt, when we found one client device can never be waked up, the battery voltage is about zero!
To prevent the RFChip enter idle status we set the status as followings:
(1) STATE1_RXTIMEOUT_STATE_ENUM_SLEEP
(2) STATE2_RXVALID_STATE_ENUM_SLEEP
(3) STATE3_RXINVALID_STATE_ENUM_RX
If the RFChip works well, then there is no way to enter idle status or keep in RX status to dry out the battery.
But to our surprise there is very little possibility that some nodes may quickly dry out the battery in serveral days. There is no master device sending packets while some nodes may dry out the battery.
We think that the following reason may cause this exception:
(1) The SI446X chip may received a noise or disturbing signal and then exit the sleep status
(2) The SI446X chip switch to idle or Rx status, then the current consumption will be about 13mA
(3) The SI446X chip wait for the MCU to issue comamnds to re-enter sleep status, but the MCU is also in sleep status
Then how to design the mechanism to quickly detect the SI446X chip exit sleep status?
We found if the SI446X chip enters wake on radio mode, it will switch between sleep and RX status, then if we set one GPIO (0/1/2/3) to indicate status, then there will be one pulse output from the GPIO (0/1/2/3).
This pulse may be used as the feed signal for a watchdog timer, if the SI446X chip exit the sleep status and keep in one steady status, such as IDLE or RX status, the the pulse will disappear!
But an external watchdog chip is requied in this mechanism, the internal watchdog timer of the MCU (EFM32G210) can only monitor the software stalemate. It can not monitor the GPIO pulse, especially in sleep status.
Then my question is:
(1) Is there any other mechanism to detect SI446X chip status? it should switch between RX and sleep periodically
(2) If an watchdog timer is required anyway, is it possible to setup another one by the internal TIMER, RTC or LETIMER to function as an external hardware watchdog chip.
If you need any further information please let me informed!
Thanks & Best Regards!
EFR32 can we get IQ samples of a 200KHz bandwidth at 868.13MHz
Hello,
We want to get IQ datas of a 200KHz bandwidth centered at 868.13MHz and do the demodulation with our existing DSP chain (currently implemented in an STM32F4).
The modulation is DBPSK and the datarate is 100bps, so ideally we would like tha IQ samples to be decimated as much as possible to let the most possible time to the MCU for demodulation.
What could be possible with the EFR32? and also does the EFR32 has DSP instructions?
Thank you in advance.
Radio configurator does not create rail_config.c
When using the radio configurator it will not produce a rail_config.c file if the crystal frequency is set to anything other than 38.4 MHz.
The radio module I am using has a 40 MHz quartz on it.
How am I supposed to generate a valid rail_config.c with the proper oscillator settings?
According to all datasheets for the MCU it supports quartz oscillators in the 38-40 MHz range. Why does the datasheet claim this range to be valid if the Software does not support it?
Set Radio Clock Prescaler EFR32MG12
Hi all,
I am using EFR32MG12 with RAIL_IEEE802154.
In the Data Sheet (EFR32MG12 Gecko Multi-Protocol Wireless SoC Family Data Sheet ) on page 36 I found the current consumption in receive mode. I am trying to get the same Condition as the Test Condition.
Test Conditions in Datasheet:
802.15.4 receiving frame, F = 2.4 GHz, Radio clock prescaled by 3
Now my question: How can I set the Radio clock prescaler to 3 ?
In picture 12.1 of EFR32xG1 Wireless Gecko Reference Manual I see a HFRADIOCLK register which seems to control the above prescaler. But I cannot find the definition of this register in the SDK. SDK Version 3.1.0, MCU SDK 6.0.0.0.
Thanks in advance!
si4463 Tx and Rx take longer than expected
Hi,
We are using MCU to control this transceiver and using time syncronisation between nodes. We use 20Kbps data rate and expect for 5Byte preamble 2 byte sync word and 5 byte data to take 4.8ms. But, in practice we observe 9ms before a Tx complete interrupt. We have verified that this is not a MCU polling or other MCU latency. We have verified that SPI speed increase does not help. Can someone help us how we can improve the speed with the same data rate looking at the config file attached.
EmberMessageSend endpoint
Hello,
What is the concept of endpoint in EmberMessageSend? I looked at the documentation at https://docs.silabs.com/connect-stack/latest/group-message but it is not clear what this is used for.
1) In the Sink example project, I saw in app_cli.c there are these lines:
/// The destination endpoint of the outgoing message
#define DATA_ENDPOINT 1
#define TX_TEST_ENDPOINT 2
and I see that cli_data() sends to DATA_ENDPOINT via EmberMessageSend.
2) In the Sensor example project the EmberMessageSend sends sensor data to endpoint=0. Is there any specific reason to use endpoint=0 in sensor and endpoint=1 in sink? Is it justa matter of convenience and we can use different endpoints in case we need to send to different "parts" of the receiving device?
I have experimented with sending to endpoint=0 from sink to sensor and it has worked too.
Thanks,
Arun
Si446x loss of sensitivity after a few hours of continuous RX operation
I have a design with two ICs, one is a 4467 and the other is a 4362. For the purpose of this test, they're both configured as receivers on two different frequencies. The configuration relies on sync word detection because the preamble is neither standard nor long enough for the options available. Direct mode is used for packet handling.
The MCU periodically issues a START_RX to each IC to restart sync word detection. RX performance is normally pretty good, until sometime late at night, after more than 6 hours of continuous operation, when performance degrades for no apparent reason. RX still functions, but with greatly reduced sensitivity. I have reproduced this on two boards with slightly different circuit designs, so it's not a one-off. Resetting the MCU which shuts down and re-initializes both ICs fixes the issue.
Where do I look? Should I take a periodic snapshot of certain registers to see if something is not right? Which registers should I look at?
The application is AIS, so loss of sensitivity is a show stopper.
TIA
Configuring thunderboard sense2 as unmodulated carrier transmitter with specific tx power and frequency.
Hi,
I am new to SLTB004A radio boards.
I want to configure the thunderboard sense 2 as unmodulated carrier transmitter.
For this reason im using rail_test example in Simplicity Studio 5.
Then i connect the serial console and with commands disable the receiver, set the Tx Power and start the Tx Tone.
My question is how can i program the board from the start as unmodulated carrier transmitter with specific frequency and power (in dB) without the need of any serial commands?
So when i connect the power supply, the board will start to transmit the tone (unmodulated carrier)
Thanks
Si4455 set-up problem
Hi all, I'm new to Si wireless so please be kind...
I'm trying to configure a Si4455 on an RF Solutions Zeta board. It's marked 455A, so it should be a B1 version chip, and I want to drive it from a PIC 16F1828 - heresy, but I don't want to learn Keil C and C8051F930 from scratch, and I'm reasonably ok with XC8. Using WDS3 (GUI Version 3.2.9.0 to be precise) I have extracted the radio config file and set up an array, all as per AN^(2, and the Si4455 data sheet, and the Rev B API documentation. But it will not load the configuration. I know it can be done as people have written so in other posts, but how?
I have found that the reset seems ok, CTS and nIRQ go high, but when it attempts to load the config array nIRQ goes low and will not go high again. It may be that the chip doesn't properly enter EZConfig mode, so what am I doing wrongly? How critical is the SDN high period? In various documentation I've seen from10 uS to 300uS? I want to use XC*'s delay routines as my MCU clock isn't the same as the C8051's, and I agree with the todo comments in the source (a better delay timer needed). I wait for CTS to go high, and send the array, the first item being the power-up.
Anyway, specifically:
What's the correct SDN high period?
What's the correct power-up sequence? The AN's don't really tally with the sequence in the config.h file, which put int control enable, frr and eztune before the ezconfig array?
Please help if you can!
sinks communicate with each other in extended star network
Hello,
I' ve created two extended star networks, one in channel 0 and one in channel 1, and I want to extend this topology into a multi hop network, where sinks would be able to communicate with each other, and send their data.
I changed the data report, so the end nodes and the extenders send only once to sink, also I tell sink to transmit what it just received to the other sink. I guess I can do it if I change the addresses of the sinks, because both have 0x00. I changed the address of the second sink to 0x0A, but when I type the info command at sink's console, I get node id as default again (0x00).
Also, I've tried to transmit using Rail's functions, because the two networks use different channels. But I get no result.
I want to ask if it is feasible to make sinks communicate with each other, also if I can use rail's functions only for sink, using StartTx at the other sink's channel at one sink, and StartRx at the other sink's channel at the second sink. And lastly, if it is nessesary to change the addresses of the sinks for that reason.
Thanks,
Thanos
请问如何获得硅调谐器Si2157和数字解调器Si2165的数据手册?
我购买了一些Silicon Labs的硅调谐器Si2157和Si2165,想实现对数字电视信号DVB-T的接收,但是现在在网上找到的只是简略的产品特性说明,找不到这两款芯片的详细数据手册,请问应该到哪里可以找到这两款芯片的详细数据手册?
Extended STAR Network implementaion in simplicity studio
Dear sir,
we are using the chipset EFR32FG1P131F128GM32.In the simplicity studio we tested the range test program its working fine.what are the programs can i use for Extended star network working please list out & tell me which function will give the neibour node address to central node.
Rajesh.M
Direct mode TRX si446x
Hi for my application I need to send 1 byte of data each 200 us, after trying different configurations of the packet handler I realized that this is not possible with this approach. So I changed to direct mode and making the packet configuration directly in the MCU, I have had promissing result so far. The 1 way link is no problem, I used the WDS to generate a direct mode RX config file and a direct mode TX config file using the examples and it works! now for my application I need to change from direct mode TX to direct mode RX and vice versa. In order to do so I could just load the configuration files once again but unfurtunatly this takes too long when loading the RX configuration. I compared both configuration files and determined what is the difference between both in order to make 2 subconfiguration files and load just the neccessary parameters but this didn't work as when I do this the data rate changes from 40kbps to 3.6 kbps. What should I do in order to change from direct mode TX to direct mode RX on the fly?
Thanks in advance, I included both configuration files, a configuration file that has the parameters of both TX and RX combined and the bare minumum configurations that I load in order to change from tx to rx and from rx to tx. I'm using the si4463 radio