📄 发送.c
字号:
#include <msp430x14x.h>
#include <stdlib.h>
#include "CC1101_h.h"
#define CSn_PIN BIT5
#define GDO0_PIN BIT4
#define SPI_SOMI BIT2 //P1.3 输入 输出 (和GDO1为同一个脚)
#define SPI_CLK BIT1
#define SPI_SIMO BIT0
//**************************************************************
#define LED_R BIT7 //P2.7 输出
#define LED_G BIT6 //P2.7 输出
//*****************************************************************
#define CSn_1() P1OUT |= CSn_PIN //CS = 1
#define CSn_0() P1OUT &=~CSn_PIN //CS = 0
#define CLK_1() P1OUT |= SPI_CLK //CLK = 1
#define CLK_0() P1OUT &=~SPI_CLK //CLK = 0
#define SIMO_1() P1OUT |= SPI_SIMO // SIMO = 1
#define SIMO_0() P1OUT &= ~SPI_SIMO // SIMO = 0
#define Val_SOMI P1IN & SPI_SOMI
//********************************************************************
#define LEDOFF_RED() P2OUT |= LED_R //LED_RED = 1 关闭
#define LEDON_RED() P2OUT &=~LED_R //LED_RED = 0 打开
#define LEDOFF_GREEN() P2OUT |= LED_G //LED_GEREEN = 1 关闭
#define LEDON_GREEN() P2OUT &=~LED_G //LED_GREEN = 0 打开
unsigned char RxFlag;
void Delay_us(unsigned int cycles)
{
while(cycles>15) // 15 cycles consumed by overhead
cycles = cycles - 6; // 6 cycles consumed each iteration
}
void Delay_ms(unsigned char count)
{
while(count--)
Delay_us(1000);
}
//-----------------------------------------------------------------------------
unsigned char SPI_bitbang_out(unsigned char value)
{
unsigned char i;
unsigned char rTemp;
for(i = 0; i < 8; i++)
{
CLK_0(); // Set clock low
if(value & 0x80) // If bit is high...
SIMO_1(); // Set SIMO high...
else
SIMO_0(); // Set SIMO low...
value = value << 1;
CLK_1(); // Set clock high
rTemp <<= 1;
if(Val_SOMI)
rTemp |= 0x01;
else
rTemp &= 0xfe;
}
CLK_0(); // Set clock low
return(rTemp);
}
//------------------------------------------------------------------------------------
// Input eight-bit value using selected bit-bang pins
unsigned char SPI_bitbang_in(void)
{
unsigned char i;
unsigned char rTemp;
for(i = 8; i > 0; i--)
{
CLK_1(); // Set clock high
rTemp <<= 1;
if(Val_SOMI)
rTemp |= 0x01;
else
rTemp &= 0xfe;
CLK_0(); // Set clock low
}
return(rTemp);
}
void SPIWriteReg(unsigned char addr, unsigned char value)
{
CSn_0(); // CS enable
while (Val_SOMI); // Wait for CCxxxx ready
SPI_bitbang_out(addr); // Send address
SPI_bitbang_out(value); // Send data
CSn_1(); // CS disable
}
void SPIWriteBurstReg(unsigned char addr, unsigned char *buffer, unsigned char count)
{
unsigned char i;
CSn_0(); // CS enable
while (Val_SOMI); // Wait for CCxxxx ready
SPI_bitbang_out(addr | CCxxx0_WRITE_BURST); // Send address
for (i = 0; i < count; i++)
{
SPI_bitbang_out(buffer[i]); // Send data
}
CSn_1(); // CS disable
}
//*******************************************************
unsigned char SPIRead(unsigned char addr, unsigned char falg_read)
{
unsigned char rTemp;
CSn_0(); // CS enable
while (Val_SOMI); // Wait for CCxxxx ready
SPI_bitbang_out(addr | falg_read); // Send address
rTemp = SPI_bitbang_in(); // Read data
CSn_1(); // CS disable
return ( rTemp );
}
void SPIReadBurstReg(unsigned char addr, unsigned char *buffer, unsigned char count)
{
unsigned char i;
CSn_0(); // CS enable
while (Val_SOMI); // Wait for CCxxxx ready
SPI_bitbang_out(addr | CCxxx0_READ_BURST); // Send address
for (i = 0; i < count; i++)
{
buffer[i] = SPI_bitbang_in(); // Read data
}
CSn_1(); // CS disable
}
unsigned char SPIStrobe(unsigned char strobe)
{
unsigned char RxTxstatus;
CSn_0(); // CS enable
while (Val_SOMI); // Wait for CCxxxx ready
RxTxstatus = SPI_bitbang_out(strobe); // Send strobe
CSn_1(); // CS disable
return(RxTxstatus);
}
void PowerupResetCCxxxx(void)
{
CLK_0(); // Set clock low
SIMO_0(); // Set SIMO low...
CSn_1(); // CS disable
Delay_us(30);
CSn_0(); // CS enable
Delay_us(30);
CSn_1(); // CS disable
Delay_us(45);
CSn_0(); // CS enable
while (Val_SOMI); // Wait for CCxxxx ready
SPI_bitbang_out(CCxxx0_SRES); //?′λCC1101
while (Val_SOMI); // Wait for CCxxxx ready
CSn_1(); // CS disable
}
/******************************************************************/
void Initialize_CPU(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
//************************************************************************************
// Config bitbang pins
P1DIR |= SPI_SIMO + SPI_CLK + CSn_PIN + BIT6; //CS CLK SIMO(GDO1)为输出
P1DIR &= ~( SPI_SOMI +GDO0_PIN); //SOMI GDO0 GDO2 SW 为输入
P1OUT &= ~(SPI_SIMO + SPI_CLK ) ; //CLK =0,SPI_SIMO= 0;
//*************************************************************************
P1OUT |= CSn_PIN; //CSn_PIN =1
// SW,GHG 使用上拉电阻;
//P1DIR |= BIT6;
}
char xx=0;
/*
void TxData(void) //先采用查询发送
{
P1OUT |= BIT6;
P1IE &= ~GDO0_PIN; //关闭GDO0中断
*********************************************************************************
txBuffer[0] = xx++; //数据长度目前固定为4
txBuffer[1] = xx++;
txBuffer[2] = xx++;
txBuffer[3] = xx++;
txBuffer[4] = xx++;
txBuffer[5] = xx++;
txBuffer[6] = xx++;
txBuffer[7] = xx++;
txBuffer[8] = xx++;
txBuffer[9] = xx++;
txBuffer[10] = xx++;
txBuffer[11] = xx++;
txBuffer[12] = xx++;
txBuffer[13] = xx++;
txBuffer[14] = xx++;
txBuffer[15] = xx++;
txBuffer[16] = xx++;
txBuffer[17] = xx++;
txBuffer[18] = xx++;
txBuffer[19] = xx++;
txBuffer[20] = xx++;
txBuffer[21] = xx++;
txBuffer[22] = xx++;
txBuffer[23] = xx++;
txBuffer[24] = xx++;
txBuffer[25] = xx++;
txBuffer[26] = xx++;
txBuffer[27] = xx++;
txBuffer[28] = xx++;
txBuffer[29] = xx++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -