sto iniziando un progetto con il transceiver TI CC1101.
Il primo step è scrivere le funzioni di lettura e scrittura. Partendo dalla lettura, dal datasheet leggo:
All transactions on the SPI interface start with a header byte containing a R/W¯ bit, a burst access bit (B), and a 6-bit address (A5 – A0).
Per cui dovrebbe essere un byte tipo [a][b][address 6 bit].
Uso delle costanti per settare i singoli bit [a] e [b]:
const READ_SINGLE = &H0080 '0x80 -> 1000 0000
const WRITE_BURST = &H0040 '0x40 -> 0100 0000
const READ_BURST = &H00C0 '0xC0 -> 1100 0000
const CONFIG_REG = &H0080 '0x80 -> 1000 0000
const STATUS_REG = &H00C0 '0xC0 -> 1100 0000
e altre per gli address:
const CC1101_SRES = &H0030' 0x30' Reset chip.
const CC1101_SFSTXON = &H0031' 0x31' Enable and calibrate frequency synthesizer
const CC1101_SXOFF = &H0032' 0x32' Turn off crystal oscillator.
const CC1101_SCAL = &H0033' 0x33' Calibrate frequency synthesizer and turn it off
const CC1101_SRX = &H0034' 0x34' Enable RX. const CC1101_STX = &H0035'
const CC1101_SIDLE = &H0036' 0x36' Exit RX / TX, turn off frequency synthesizer and exit
Dal datasheet leggo che:
When the header byte, data byte, or command strobe is sent on the SPI interface, the chip status byte is sent by the CC1101 on the SO pin.
The status byte contains key status signals, useful for the MCU.
Quindi dopo l'invio di un comando dovrei ricevere lo status register:
STATUS BYTE [7] [6][5][4] [3][2][1][0]
7: [CHIP_RDY]
6-4: [STATE]
3_0: [FREE FIFO BYTE]
In Bascomese dovrebbe essere:
- Code: Select all
CONFIG Spi = Hard , Interrupt = Off , Data Order = Msb , Master = Yes , Polarity = Low , Phase = 0 , Clockrate = 16
SPIINIT
Dim Dato_da_Inviare as byte
Dim Dato_Ricevuto as byte
Dato_da_Inviare = READ_SINGLE
Dato_da_Inviare = Dato_da_Inviare AND CC1101_SRES
SPIOUT Dato_da_Inviare, 1
SPIIN Dato_Ricevuto , 1
E' corretto?