BM71 MCU Interface
Overview
The BM71 provides a flexible MCU interface, which can be tailored to your specific needs. The most basic interface requires only two Universal Asynchronous Receiver Transmitter (UART) interface signals. Two additional control signals are also recommended: one to reset the module, and the other to enable BM71 firmware/configuration programming.
The BM71 is configured and controlled via binary packet communications over a UART interface. The "BLEDK3 Command Set" user's guide contains a complete command/event/response listing and details of the interface. Additionally, the module provides status indication/control via several programmable General Purpose Input/Output (GPIO) pins, simplifying MCU firmware and state-machine development.
Further documentation on the MCU interface and available GPIO pin functions may be found in the BM70/71 device datasheet.
Binary Packet Communications
The MCU host sends specially formatted Command packets to the module. Depending on the command, the module will issue Event response packets and eventually a Command Complete response packet as shown:
Commands cover the following operational categories:
- Common (Reading basic device information)
- Generic Access Profile (GAP) Commands (Bluetooth® Low Energy (BLE) Connection Management)
- Generic Attribute Profile (GATT) Client (BLE Data Exchange)
- GATT Server (BLE Data Exchange)
- GATT Transparent
- Pairing
Please refer to the BLEDK3 Command Set document for complete details.
Command Packet
Response Packet ("Command Complete")
Example
The following depicts a command/response sequence for the Read Local Information command:
Basic Interface (Manual Pattern Mode)
In the simplest configuration, the module requires two UART interface signals (TX and RX). Two additional control signals are also recommended: one to reset the module, and the other to enable BM70 firmware/configuration programming.
RST_N (Reset)
The Reset input pin (RST_N) is used to Reset the BM70/71 with an active-low pulse with a minimum pulse width of 63 ns.
P2_0 (System Configuration)
This pin is used to enable module firmware/configuration updates.
HCI_TXD / HCI_RXD
UART data output/input signals.
The default port configuration for the UART is described in the table below:
Parameter | Value |
---|---|
Baud Rate | 115200 |
Data Bits | 8 |
Parity | None |
Stop Bits | 1 |
Flow Control | None |
Basic Interface (Auto Pattern Mode)
The basic signal interface for Auto Pattern mode (Transparent UART) adds two active-low UART flow control signals, P3_6/UART_RTS and P0_0/UART_CTS:
Special Function Pins
Several additional programmable GPIO signals are available to be interfaced with the host MCU. Some of these are used for control, while others may be used to monitor module state as an alternative to UART event packets.
Some of these pin functions are dedicated, however, most can be re-programmed with the User Interface (UI) Configuration Tool.
P1_6 (UART_RX_IND Pin - Programmable)
When enabled, this active-low input pin function can be used to reduce the active current consumption of the module by disabling the UART HCI_RXD pin function. When enabled, the host MCU needs to insert a ~3 mS delay before sending a command packet as shown:
P1_7 (PAIRING_KEY Pin - Programmable)
During an active BLE connection, this active-low input pin function can be used to force the module to terminate the link and enter into Standby mode. This signal needs to be applied for at least 160 mS as shown:
Px_x (LINK_DROP Pin - Programmable)
During an active BLE connection, this active-low input pin function can be used to force the module to terminate the link and enter into Shutdown mode. This signal needs to be applied for at least 10 mS as shown:
P0_2 (LED0 Pin - Dedicated)
This active-low output pin function can be used to signal various BLE connection states. Options are also provided to flash this output at various rates.
P2_7 (UART_TX_IND Pin - Dedicated)
This active-low output pin function can be used to signal the host MCU that data will be transmitted out of the HCI_TXD pin after a specific interval:
P1_3/P1_2 (STATUS2/STATUS1 Pins - Programmable)
When enabled, these output pin functions indicate a variety of module connection states, as shown in the following table:
STATUS1 | STATUS2 | Status | Description |
---|---|---|---|
H | H | Shutdown mode | BM70 is shutdown |
H | L | Standby mode | BM70 sends advertising packets and is discoverable and connectable |
L | L | Connected mode | BLE Link is established (BLE GATT Operating mode) |
L | H | Connected mode | BLE Link is established (Transparent UART Service Operating mode) |
Px_x (LOW_BATTERY_IND Pin - Programmable)
This active-low output pin function can be used to signal a low battery condition on VBAT. Additionally, the module can be configured to enter shutdown if the battery voltage remains low for a certain time interval.
Px_x (RSSI_IND Pin - Programmable)
If enabled, this output pin function can be used to signal the BLE connection link quality. The module checks two link quality levels which can be configured using the UI Configuration Tool. If link quality is lower than the Received Signal Strength Indicator (RSSI) Weak Threshold, then RSSI_IND output is low. If link quality is higher than RSSI Normal Threshold, then RSSI_IND output is high, as shown here: