Should application implement CRC

Hi,

When using radios like CC1101, Lora, NRF24L01 or similar radios in general, is there any need of implementing CRC in application sending it to the other end and have the application verify it?

Thanks and Regard,
WonderfulIOT

wonderfuliot:
Hi,

When using radios like CC1101, Lora, NRF24L01 or similar radios in general, is there any need of implementing CRC in application sending it to the other end and have the application verify it?

Thanks and Regard,
WonderfulIOT

How important is it TO YOU that the data received IS the data sent? Only YOU can answer that.

If you are sending potentiometer readings every 10 milliseconds, to control the speed of a robot, and one value is misconstrued, 10 milliseconds of running at the wrong speed (assuming instantaneous acceleration and deceleration) is not a big deal.

If you are sending buy orders to your stockbroker, requesting buying 10000 shares at $2.50 each, being misinterpreted as buying 90000 shares at $8.50 each, just might be a problem.

The nRF24L01+ modules implement a lot of internal error checking - read the Nordic datasheet. I suspect additional error-checking would be superfluous - assuming all of your data can be contained in a single 32 byte message.

I don't know about the other wireless systems.

...R

PaulS:
How important is it TO YOU that the data received IS the data sent?

My application needs error free data. Its ok to drop data if needed but cannot accept data with error

Robin2:
The nRF24L01+ modules implement a lot of internal error checking

While the NRF24 may do it extensively but other radios may not. Is there any realistic chance of receiving erroneous data in other radios? My radio interface code is common for all radios so its better to know this in advance and implement it in app just in case some radios dont implement CRC. The radio code is evolving so I dont know the exact radio that will be used in the end. I believe all modern radios implement CRC but dont know how strongly do they implement.

wonderfuliot:
My application needs error free data. Its ok to drop data if needed but cannot accept data with error

A CRC on the data can reduce the chance of an error to a very small amount, but thats different to 'error free'

I believe all modern radios implement CRC

You'd be wrong, then. Radios do not manipulate the data. Microcontrollers manipulate data, calculating and adding a CRC.

433 MHz radios do not have microcontrollers, so they can't possibly implement CRC.

wonderfuliot:
I believe all modern radios implement CRC but dont know how strongly do they implement.

A lot do, although I would not presume all do.

The LoRa devices certainly do generate and check CRCs for packets within the RF chip, the RFM22 (Si4432) does as well.

wonderfuliot:
I believe all modern radios implement CRC but dont know how strongly do they implement.

Read the product datasheets.

You are not going to be able to implement a one-size-fits-all system at the low-level interface with the different wireless modules. For example you will need one function to talk to an nRF24 and a different function if you use LoRa and another if you use Bluetooth. In each of those functions you will be able to implement any additional reliability features that you require.

...R
Simple nRF24L01+ Tutorial

My application needs error free data. Its ok to drop data if needed but cannot accept data with error

Pick a radio and experiment to determine the actual error rate. It is impossible to reduce it to zero.

jremington:
Pick a radio and experiment to determine the actual error rate.

That may not be easy if the normal error rate is low. One might "know" that the system cannot be perfect but it might not be easy to encounter any errors, or enough errors to be statistically significant.

That's why I favour a careful read of the appropriate product datasheets.

...R

That may not be easy if the normal error rate is low.

My point is that this discussion is completely theoretical, so it is time for the OP to do a real life experiment.

jremington:
My point is that this discussion is completely theoretical, so it is time for the OP to do a real life experiment.

I agree completely that the OP needs to move from talk to practice. I just don't think measuring error rates is the way to do that.

...R

If the OP is concerned about error rates, then he/she will need to measure them. It is the obvious thing to do, and very simple to implement.

jremington:
If the OP is concerned about error rates, then he/she will need to measure them. It is the obvious thing to do, and very simple to implement.

It is only simple to implement if the system being tested is unreliable. If the system is reliable a month could go by without any errors. But that would not mean that an error would not arise on day 32.

And a big problem with wireless systems is the risk of interference by another device - which might only be brought in close proximity to the project at 21:27 each evening (+/- 5 minutes), or only on Good Fridays. These are not easily detected with tests.

As you rightly pointed out the OP's questions at this stage are entirely theoretical.

...R