2021-03-02 07:07 PM
I am currently using the X-NUCLEO-BNRG2A1 to experiment with the BlueNRG-2. Using the getBlueNRGVersion function, I see that the hardware version is 0x12 and the firmware version is 0x2211 and had some questions on how to interpret this:
Solved! Go to Solution.
2021-03-03 09:30 PM
Hardware version is also known as the cut version of the IC, which comes with the chip when produced (DIE_ID). 0x12 would be cut v1.2.
Firmware version is the BLE stack (library) version being programmed in flash. 0x2211 is strange - possibly it shall be 0x211, which means stack v2.1a.
The details for different firmware versions is in ReleaseNotes, that comes with BlueNRG-1_2 DK, by default under:
file:///C:/Program%20Files%20(x86)/STMicroelectronics/BlueNRG-1_2%20DK%203.2.1/Docs/BlueNRG1_fw_stack_release_notes/BlueNRG-1_release_notes.html
X-NUCLEO-BNRG2A1 is built with BlueNRG-M2SP module.
BlueNRG-M2SP was previously certified to Bluetooth 5.0 with firmware version 2.1A, and currently certified to Bluetooth 5.2 with firmware version 2.1C.
BlueNRG-2 is not (pre)flashed with an image.
2021-03-03 09:30 PM
Hardware version is also known as the cut version of the IC, which comes with the chip when produced (DIE_ID). 0x12 would be cut v1.2.
Firmware version is the BLE stack (library) version being programmed in flash. 0x2211 is strange - possibly it shall be 0x211, which means stack v2.1a.
The details for different firmware versions is in ReleaseNotes, that comes with BlueNRG-1_2 DK, by default under:
file:///C:/Program%20Files%20(x86)/STMicroelectronics/BlueNRG-1_2%20DK%203.2.1/Docs/BlueNRG1_fw_stack_release_notes/BlueNRG-1_release_notes.html
X-NUCLEO-BNRG2A1 is built with BlueNRG-M2SP module.
BlueNRG-M2SP was previously certified to Bluetooth 5.0 with firmware version 2.1A, and currently certified to Bluetooth 5.2 with firmware version 2.1C.
BlueNRG-2 is not (pre)flashed with an image.
2021-03-03 10:14 PM
Thanks for your response, I have a few more follow up questions for you:
2021-03-03 10:22 PM
Thanks for your response, I have a few more follow up questions for you (sorry, this is the second time I'm posting this since I didn't mark it as a reply to your message and it won't let me delete my posts):
2021-03-04 05:33 PM
uint8_t getBlueNRGVersion(uint8_t *hwVersion, uint16_t *fwVersion)
{
uint8_t status;
uint8_t hci_version, lmp_pal_version;
uint16_t hci_revision, manufacturer_name, lmp_pal_subversion;
status = hci_read_local_version_information(&hci_version, &hci_revision, &lmp_pal_version,
&manufacturer_name, &lmp_pal_subversion);
if (status == BLE_STATUS_SUCCESS) {
*hwVersion = hci_revision >> 8;
*fwVersion = (hci_revision & 0xFF) << 8; // Major Version Number
*fwVersion |= ((lmp_pal_subversion >> 4) & 0xF) << 4; // Minor Version Number
*fwVersion |= lmp_pal_subversion & 0xF; // Patch Version Number
}
return status;
}
For the MSB byte, 0x22, the first nibble is HW part and the second nibble is FW major version number.
Previously I was thinking of just FW version itself, which was 0x211 (w/o HW part) instead of 0x2211 (w/ HW part), so.
Now it is clear.