I've been given a number of CC110L AIR Modules to be used with the Tiva C series devices. I'm starting with the TM4C123G. Unfortunately TI development for this boosterpack seems to have stopped at the MSP430 and all the documentation that came with the CC110L just keeps telling me to use the windows executable programs and the pre-programed MSP430. There are many reasons why that won't work so I'm just trying to set it up as a normal SSI device.
I have wired it as follows
TM4C123G | CC110L | Function |
+3.3V | J1-1 | |
GND | J2-1 | |
PB4 | J1-4 | SCLK |
PB5 | J2-8 | CSN |
PB6 | J2-4 | Rx/MISO |
PB7 | J2-5 | Tx/MOSI |
with SSI configured as
#define RADIO_SSI_PORT_BASE GPIO_PORTB_BASE void radioConfigure(void) { consoleVPrint(VERBOSITY_FUNCTION, STRING_FUNC()); MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); MAP_GPIOPinConfigure(GPIO_PB4_SSI2CLK); MAP_GPIOPinConfigure(GPIO_PB6_SSI2RX); MAP_GPIOPinConfigure(GPIO_PB7_SSI2TX); MAP_GPIOPinTypeSSI(RADIO_SSI_PORT_BASE, GPIO_PIN_4 | GPIO_PIN_6 | GPIO_PIN_7); // chip select MAP_GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, GPIO_PIN_5); MAP_GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_5); MAP_SSIConfigSetExpClk(RADIO_SSI_PORT_BASE, // ssi module base address g_ui32SysClock, // clock rate to the ssi module SSI_FRF_MOTO_MODE_0, // data transfer protocol SSI_MODE_MASTER, // mode of operation 5000000, // clock rate 16); // bits per frame MAP_SSIEnable(RADIO_SSI_PORT_BASE); radioEnable(true); }
The configuration may or may not work.
The problem I'm having is that I have not been able to determine what I can actually SSIDataPut() or SSIDataGet() to/from the device to determine whether or not I can talk to it. Just looking for a ping-like command.
I found tables 5-20 and 5-21 in the CC110L datasheet which gives a list of registers.
For example there is a register for PARTNUM
Address | Register | Description |
0x30 (0xF0) | PARTNUM | Part number for CC110L |
How would I go about reading this register?
I'm assuming I'll have to do an SSIDataPut() to tell the CC110L what data I want and then get it. Something like:
// send the PARTNUM command (0x30 or 0xF0?) SSIDataPut(GPIO_PORTB_BASE, 0x30); // delay/wait for interrupt? // read the ssi rx buffer SSIDataGet(GPIO_PORTB_BASE, &uint32Data);
EDIT: Updated TM4C123G-CC110L AIR Module connection
TM4C123G | CC110L | Function |
+3.3V | J1-1 | |
GND | J2-1 | |
PB4 | J1-7 | SCLK |
PB5 | J2-8 | CSN |
PB6 | J2-4 | Rx/MISO |
PB7 | J2-5 | Tx/MOSI |