CRC on the nrf52840

Hello!

Regarding the CRC on the nrf52840 the specifications make it clear that the maximum length of the CRC is 3 bytes, We are working on an industrial communication protocol that we want to implement on the nrf52840. This protocol needs 4 bytes crc (crc32), is there a workaround for this? 

Thanks! 

Parents Reply Children
  • Okay fair enough, What we are trying to figure out is whether the nrf52840 will be able to support an industrial communication protocol called IO-Link Wireless. This protocol builds upon Bluetooth Low Energy version 4.2, but it requires 4 bytes CRC instead of 3. With that information, do you conclude that the nrf52840 board will not be able to support IO-Link Wireless since it has this specification? 

  • That depends on how the IO-Link Wireless does this. To be fair, I don't think that everyone using this protocol has written their own Bluetooth stacks (but they could of course be using some sort of open source stack. I don't know). If they use 4 bytes instead of 3, they will also be breaking the specification, so they will not be able to certify it with Bluetooth SIG. 

    Are you sure that the 4 byte CRC is not just added to the Bluetooth payload packet (and then the standard 3 byte CRC follows after that)? I am not familiar with IO link (in fact I never heard of it before now), and a quick google search didn't really make me a lot smarter on that topic. Either way, if your question is whether it is possible to increase the CRC from 3 to 4 bytes inside our Bluetooth stack, then I am afraid the answer is no.

    But if that is the case, I doubt that there exists another wireless protocol that is an exact copy of the Bluetooth Low Energy standard, with the only difference being one extra byte of CRC, so in that case, I guess it wouldn't work anyway.

    It may be that I don't understand this fully, but perhaps you can ask the developers/owners of IO-Link whether that is actually the case (that they are equivalent to BLE apart from the amount of CRC bytes)

    Best regards,

    Edvin

  • Okay I think there is some confusion but I will try to clarify a bit.

    So, IO-Link Wireless, uses a 4 byte CRC for each packet, it sends packets back and forth between slave and master and they both use a 4 byte CRC on each packet, when looking at the radio peripherals in the specification each received packet and transmitted packet uses the hardware module CRC which only support 3 bytes, consider this package down below, this is what is called a "configuration downlink" in the IO-Link Wireless specification, it is a communication exchange from a master to a slave, it is used for configuration purposes.

    Now the big question, can you configure the radio it in such a way that it can still support 4 bytes CRC via software? So hypothetically you implement an IO-Link Wireless stack on the nrf52840 board and use a 4 byte CRC but it works via software and NOT via the hardware module, or maybe, the software CRC can complement the hardware CRC? so that is becomes 4 byte CRC.  Do you think that that is possible? and if so, how can you do that?

    Best regards

  • Hello,

    I see. So just to clarify, you can not use the Bluetooth stack (Softdevice) for this. But if you were to implement your own radio protocol, you can implement a 4 byte CRC and attach it to the end of your payload. If you do this, please remember to disable the radio's built in CRC, by setting the NRF_RADIO->CRCCNF register to 0x00000000, which will exclude the HW CRC from the packet. 

    kongstrupp said:
    or maybe, the software CRC can complement the hardware CRC?

    That is more complicated. I wouldn't recommend that.

    Best regards,

    Edvin

  • Hello Edvin, Can we have a live meeting with you on Zoom? That would mean a great deal for us if you could, This is pretty hard to discuss in a forum like this

    Thanks a lot

    Best regards!

Related