MWSDK(TWELITE SDK)
MONO WIRELESS INC.
MWSDK_EN
MWSDK_EN
  • TWELITE SDK (MWSDK) manual
  • Introduction
    • TWELITE SDK Terms of Use
    • Support and response
    • Mono Wireless Software License Agreement
    • Structure of TWELITE SDK
  • Get the latest version
    • TWELITE SDK revision history
  • How to use TWELITE SDK
    • Install TWELITE SDK (MWSDK)
    • Use with VSCode
    • folder structure
    • How to build from the command line
    • About build definitions
      • About Makefile
      • about Version.mk
      • bin file naming conventions
    • program firmware
      • Wiring for firmware programming
      • tweterm.py
  • TWELIET NET API overview
    • Terms
    • TWELITE NET library structure
    • TWENET working flow
      • flow: System start-up
      • flow: Main loop
      • flow: Wireless events
      • flow: Hardware interrupts/events
      • flow: User-defined event processing function
    • Structure of the source code
    • Modules
    • Wireless packets
      • Maximum packet length
      • Addressing conventions
      • Application ID
    • About the network
      • SimpleNet
        • Transmit
        • Receive
      • RelayNet
        • Implementation of the parent device
        • Implementation of repeaters
        • Implementing a child device (MININODES)
        • NB beacon system connection
        • Address of the relay network
        • Static relay with fixed host address
  • TWELITE NET API references
    • The callback functions
      • cbAppColdStart()
      • cbAppWarmStart()
      • cbToCoNet_vMain()
      • cbToCoNet_vRxEvent()
      • cbToCoNet_vTxEvent()
      • cbToCoNet_vNwkEvent()
      • cbToCoNet_vHwEvent()
      • cbToCoNet_u8HwInt()
    • TWELITE NET functions
      • ToCoNet_vMacStart()
      • ToCoNet_bMacTxReq()
      • ToCoNet_u32GetSerial()
      • ToCoNet_u32GetRand()
      • ToCoNet_vSleep()
      • ToCoNet_vDebugInit()
      • ToCoNet_vDebugLevel()
      • ToCoNet_u32GetVersion()
      • ToCoNet_bRegisterAesKey()
      • ToCoNet_vRfConfig()
      • ToCoNet_vChConfig()
      • ToCoNet_Tx_vProcessEventQueue()
      • ToCoNet_u16RcCalib()
    • RelayNet API
      • functions
        • ToCoNet_Nwk_bInit()
        • ToCoNet_Nwk_bStart()
        • ToCoNet_Nwk_bPause()
        • ToCoNet_Nwk_bResume()
        • ToCoNet_Nwk_bTx()
      • Structure
        • tsTxDataApp (relay net)
        • tsRxDataApp (relay net)
        • tsToCoNet_Nwk_Context
      • LayerTree net
        • ToCoNet_NwkLyTr_psConfig()
        • ToCoNet_NwkLyTr_psConfig_MiniNodes()
        • tsToCoNet_NwkLyTr_Context
    • typedef, frequently used macros
    • Structures
      • sToCoNet_AppContext
      • tsRxDataApp
      • tsTxDataApp
    • TWELITE NET macros
      • ToCoNet_REG_MOD_ALL()
      • utils.h
    • User defined event handling functions
      • State
      • Events
      • ToCoNet_Event API
        • ToCoNet_Event_Register_State_Machine()
        • ToCoNet_Event_Process()
        • ToCoNet_Event_SetState()
        • ToCoNet_Event_vKeepStateOnRamHoldSleep()
        • ToCoNet_Event_u32TickFrNewState()
    • Module library
      • ENERGY SCAN
      • NB SCAN
    • PRSEV library
    • global variables
      • uint32 u32TickCount_ms
      • sToCoNet_AppContext (static variable)
    • PANIC
  • HW API reference
    • Peripherals
      • ADC
        • adc.c
      • DIO
      • TickTimer
      • UART
        • SERIAL library
          • SERIAL_vInit()
          • SERIAL_vInitEx()
          • SERIAL_bRxQueueEmpty()
          • SERIAL_i16RxChar()
          • SERIAL_vFlush()
          • tsSerialPortSetup
          • tsUartOpt
        • fprintf library
          • vfPrintf()
          • vPutChar()
          • tsFILE
      • Timer
        • Timer library
          • vTimerConfig()
          • vTimerStart()
          • vTimerStop()
          • vTimerDisable()
          • tsTimerContext
      • WakeTimer
      • I2C
      • SPI
    • Flash, EEPROM
      • EEPROM
      • Flash
  • Utils references, others.
    • ByteQueue
    • u8CCITT8()
    • SPRINTF library
    • BTM library (consecutive reading) DIO input
GitBook提供
このページ内
  • About port numbers
  • About negative logic
  • State at start-up
  • Input
  • Output
  • Pull-up
  1. HW API reference
  2. Peripherals

DIO

The DIO (General Purpose IO) can be input or output as desired under the control of the firmware.

Also commonly referred to as GPIO, but referred to as DIO throughout this manual.

The following can be done with general purpose IO:

  • Digital input (H or L level readout)

    • Pull-up (50kΩ, typ) can be set.

  • Digital output (H or L level output)

    • The maximum value of the supply or suction current (3 mA at 3 V typ).

  • Interrupt (rising or falling)

    • The rise and fall cannot be detected simultaneously.

    • It is also available in sleep mode.

About port numbers

There are 20 DIOs, numbered 0 to 19. These are called in order DIO0 ... DIO19. The following APIs allow you to specify the DIO number directly.

vPortAsInput(10); // set DIO10 as input
bool_t bPort = bPortRead(10);
   // TRUE: DIO10 is LO(GND) level
   // FALSE: DIO10 is HIGH(VCC) level

About negative logic

For TWELITE wireless microcontrollers, the port state at power-on reset is at the High (Vcc) level, so in principle TWELITE NET sets the High (Vcc) level to 0 and the Lo (GND) level to 1.

State at start-up

On power-up, all ports are initialised in the following state

  • Input

  • Pull-up enabled

Input

To change a port to an input, call vPortAsInput().

#define PORT_DI1 11 // DIO11
vPortAsInput(PORT_DI1);

To read the status of a port, call bPortRead().

bool_t bPortStat;
bPortStat = bPortRead(PORT_DI1);

Output

To change the port to an output, call vPortAsOutput(c). Also, to set the value of a port, call vPortSetLo(), vPortSetHi(), or vPortSet_TrueAsLo().

#define PORT_DO1 18 // DIO18
vPortSet_TrueAsLo(PORT_DO1, TRUE); // TRUE: set Lo
vPortAsOutput(PORT_DO1);

t is recommended to set the output setpoint of the port before setting the output. This is because when observing the voltage of the port from the outside, it may behave, for example, to drop to GND for a moment and then return to the Vcc level.

Pull-up

You can stop the pull-up by calling vPortDisablePullup().

#define PORT_DI1 11 // DIO11

vPortDisablePullup(PORT_DI1);
vPortAsInput(PORT_DI1);

Stopping pull-ups saves power in the following cases

  • External is Lo level at input port

  • Setting the Lo level on the output port

However, on ports where pull-ups have been stopped, care should be taken to use

  • Nothing connected to the input port (or equivalent)

    • Extra current consumption may occur

  • Stop pull-ups on ports that do not require configuration

    • Extra current consumption may occur

  • When the input port is used as an interrupt wakeup pin

    • An external pull-up is mandatory when connecting buttons etc.

前へadc.c次へTickTimer

最終更新 3 年前