Understanding the GPIO pin out mapping for CC2540DK (SmartRF05EB + CC2540EM module)
Developing a prototype with the CC2540DK (SmartRF05EB + CC2540EM) I hit the issue where the pin mapping from the CC2540 chip to the final breakout pin headers is extremely convoluted. Here is source of this issue:
- CC2540 is mounted on the CC2540EM module using Pin headers P1 and P2. This implies one pin mapping from CC2540 to the EM module’s pin out
- The CC2540 EM module connects to the SmartRF0EB via the EM connectors P5 and P5 on the SmartRF05EB board. The Pin mapping, at least numerically is preserved, but you don’t know which of P1 and P2 is connected to P5 or P6.
- Finally, P5 and P6 on the SmartRF05EB are routed over to the GPIO pin headers P18 and P20 and now you are 100% lost how the original CC2540 pins got routed over to the P18 and P20.
Essentially, between CC2540->CC2540 EM Module->SmartRF05EB EM Connectors -> SmartRF05EB breakout headers, you will be twisted like a pretzel. This blog post on mono devices pointed me roughly in the right direction. Essentially, you need to correlate between them like the following
First you go to the Spec sheet for CC2540EM. Here you note down which pins are connected to which pin headers on the EM module
Then you Look at the physical layout of the pin headers in the same Spec sheet as above. OK, so P1 is to the left and P2 is to the right. Based on that you infer that once mounted on the SmartRF05EB board, P1 is connected to P5 and P2 is connected to P6.
Cool. Now you look at the SmartRF05EB user guide and look for the EM Connector Pin out which looks like the following:
Thankfully, since the pin numbers are exactly the same between the CC2540EM board and the EM connector because they are physically compatible, you know which pins of the EM connector map to which pins of the CC2540EM.
As the next step, you look at the GPIO headers, which the manual calls Probe connectors.
There does not seem to be any particular method behind which pin from the EM connector maps to the pin on the Probe/GPIO header, but essentially, what you have to do is to take the Pin names on the EM connector headers and map the names to the Pin names on the Probe headers. Pretty painful. Anyways, I did it so I am sharing here in case it is useful to someone. Make sure to cross check if things are not working. I am not guaranteeing that my brain is not already busted from counting and cross referencing a million times.