How is output drive capacity set on the BL600 digital output pins?

The BL6x0 can drive external circuits from its SIO pins when they are configured as digital outputs (DIO) using the function, GpioSetFunc(nSigNum,nFunction,nSubFunc). Starting with firmware v1.5.65.0, the BL6x0 module can output any permutation of the following three states depending on the logic output state of the DIO pin (logic 0 or 1):

Standard Output Drive

High Output Drive (a maximum of three pins can be configured as high drive outputs)

Hi-Z / High Impedance / Disconnect

In the BL6x0 Extension Functionality manual(s) the section for nFunction==Digital_Out can be confusing but what follows expands and further explains how to configure a pin for Digital_Out w/ standard or high drive capability:

 

Combination of nSubFunc bits 0,1,2,3

nSubFunc Output *

0000 (BL6x0 Extension Functionality manual lists this as ‘0’)

Initial output LOW (==0)

0001 (BL6x0 Extension Functionality manual lists this as ‘1’)

Initial output HIGH (== 1)

0010 (BL6x0 Extension Functionality manual lists this as ‘2’) **

Output is PWM (see GpioConfigPwm() for setup and operation details)

0011 (BL6x0 Extension Functionality manual lists this as ‘3’) **

Output is Frequency (GpioWrite(x) sets output frequency; where x= 0 to 4000000, GpioWrite(0) switches frequency output OFF)

All other values

Reserved for Future Use

 

* Only one of the nSubFunc outputs, defined above, may be active on a single DIO pin

** Output drive capacity settings for bits 4, 5, and 6 are not valid (== 000) when nSubFunc output is PWM or Frequency

Combination of nSubFunc bits 4, 5, 6

Output Drive when DIO == 0

Output Drive when DIO == 1

000

Standard 0.5mA output drive

Standard 0.5mA output drive

001

High 5.0mA output drive

Standard 0.5mA output drive

010

Standard 0.5mA output drive

High 5.0mA output drive

011

High 5.0mA output drive

High 5.0mA output drive

100

Hi-Z / Disconnect

Standard 0.5mA output drive

101

Hi-Z / Disconnect

High 5.0mA output drive

110

Standard 0.5mA output drive

Hi-Z / Disconnect

111

High 5.0mA output drive

Hi-Z / Disconnect

Example 1:

The following will set up SIO_1 as a Digital_Out, initially LOW, with logic output 0 == Hi-Z (disconnect) and logic output 1 == High Drive: rc=GpioSetFunc(1,2,0x50); where 0x50 == 1010000 or…bits 3 2 1 0 == 0 0 0 0 (output initially LOW), bits 4 5 6 == 1 0 1 (0==Hi-Z / 1==High Drive) 

Example 2:

The following will set up SIO_13 as a Digital_Out, initially HIGH, with logic output 0 == High Drive and logic output 1 == Standard Drive: rc=GpioSetFunc(13,2,0x11); where 0x11 == 0010001 or…bits 3 2 1 0 == 0 0 0 1 (output initially HIGH), bits 4 5 6 == 0 0 1 (0==High Drive / 1==Standard Drive)

Categories