2.6 Input/Output Configuration and Level Control of GPIO Pins
The RNBD451 module have General Purpose Input Output (GPIO) pins functionality assigned on certain pins on the 40-pin package. Out of all available pins, the GPIO pins that can be controlled using ASCII commands are defined as I/O level control by ASCII command. The RNBD451 module datasheet Table 3-1 captures the detailed pin description details for all available pins
For easy understanding, the GPIO pins that can be controlled using ASCII commands are captured in below table.
Note:In the RNBD451 Add on Board, the gpio pins are not brought out. This configurtation will be helpful for the module users.
Pin Number | Name | Definition |
14 | PB8 | I/O level control by RN command |
17 | PB10 | I/O level control by RN command |
18 | PB11 | I/O level control by RN command |
20 | PA0 | I/O level control by RN command |
21 | PA1 | I/O level control by RN command |
22 | PB12 | I/O level control by RN command |
23 | PB13 | I/O level control by RN command |
32 | PA10 | I/O level control by RN command |
The ASCII command provide the flexibility to configure these GPIO pins as either input and read its pins digital state or configure as output pins and set the desired output pin level to it. The functionality of configuring the pin as digital input and reading its value is made possible with Set Digital Input and Read Port (|I, <hex16>) command. By using the Set Digital Output Port (|O, <hex16>, <hex16>) command, the GPIO pin can be configured as Output pin and set its default level. For detailed description of these commands, refer to the RNBD451 Bluetooth Low Energy Module User’s Guide available in product page.
Individual bitmap values are assigned to each pin in the module firmware. Thus, the bitmap values are considered as an identification pointer for each pin. This method of assignation helps to configure multiple pins in singe command execution. Refer below table to understand the assigned bitmap values for each pin.
Table: Digital I/O Bitmap
Bitmap | RNBD451 Pins |
0001 | PA0 |
0002 | PA1 |
0004 | Reserved |
0008 | Reserved |
0010 | PA10 |
0020 | Reserved |
0040 | Reserved |
0080 | PB8 |
0100 | PB10 |
0200 | PB11 |
0400 | PB12 |
0800 | PB13 |
1.1 Set Digital Input Command Implementation and Usage
Set Digital Input and Read Port (|I, <hex16>)
Format: |I, <hex16>
Command |I do the functionality of configure the pin as digital input and read the input level of the pin in single command execution. The command expects a hex16 value as its parameter which indicate the corresponding bitmap value of the RNBD451 pin. The Table: Digital I/O Bitmap provides details about the I/O pin bitmap format. The expected response for the command is also a bitmap. If the corresponding pin to read is high, then the bit in theresponse is set, otherwise, the bit is cleared
Example 1: Set Digital input pin PA0 and PA1 and read back
Example:
|I,0003
// Read digital I/O PA0 and
PA1.
// If return value is 0002,
// then PA0 is low and PA1 is high
Response:
AOK
// Success
ERR
// Syntax error or invalid parameter
The general idea: If we want to configure multiple pins, then we need to add the bitmap values of the indented pins provide as input parameter to the command.
In the above example, the pins PA0 and PA1 are set as input and its input levels are read. For that, the corresponding bitmap values of PA0 and PA1 is added. That is 0001 + 0002 = 0003. The input should be in hex16 format for the command to process. Else the command respond Err.
If the response value received is 0002. That shows that the PA0 is low and PA1 is high.
The corresponding binary equivalent value will give more idea about the pins state.
Binary equivalent of 2 is 0010
0(Reserved) 0(Reserved) 1(PA1) 0(PA0)
Example 2: Set Digital input pin PA10 and PB8 and read back
Example:
|I,0090
// Read digital I/O PA10
and PB8.
// If return value is 0090,
Response:
AOK
// Success
ERR
// Syntax error or invalid parameter
In the above example, the pins PA10 and PB8 are set as input and its input levels are read. For that, the corresponding bitmap values of PA0 and PA1 is added. That is 0010 + 0080 = 0090
If the response value received is 0090. That shows that the PA10 is High and PB8 is high.
Binary equivalent of 90 is 1001 0000
1(PB8) 0(Reserved) 0(Reserved) 1(PA10) 0(Reserved) 0(Reserved) 0(PA1) 0(PA0)