📄 cc2420run.c
字号:
#include "port_config_CC2420.h"
#include "cc2420init.h"
#include "cc2420const.h"
#include <msp430x16x.h>
char txlen;
char *txbuf;
char data[20];
void flushTxfifo(void)
{
HPLCC2420_cmd(CC2420_SFLUSHTX);
}
MsgPtr HPLCC2420_readRXFIFO()
{
int RevLen,i=1;
PHY_Selected();
// clear the RX flag if set
isTxIntrPending();
SPI_Rx(); //isRxIntrPending();
SPI_Tx(CC2420_RXFIFO |CMD_READ);
while(!(isRxIntrPending())) ;
SPI_Rx();
SPI_Tx(0);
while(!(isRxIntrPending())) ;
// get the length of the buffer
RevLen = SPI_Rx();
data[0]=RevLen;
//msg->length = Revlen;
while(!(RevLen==0))
{
SPI_Tx(0);
while(!(isRxIntrPending())) ;
data[i++]=SPI_Rx();
RevLen--;
}
flushRxfifo();
return (MsgPtr)data;
}
void HPLCC2420_writeTXFIFO(char length, char *data) {
char i = 0;
txlen = length;
txbuf = data;
PHY_Selected();//TOSH_CLR_RADIO_CSN_PIN();
// clear the RX flag if set
isTxIntrPending();
SPI_Rx(); //isRxIntrPending();
SPI_Tx(CC2420_TXFIFO);
while(!(isTxIntrPending())) ;
SPI_Tx(length);//发送长度
while(!(isTxIntrPending())) ;
for (i =1; i < txlen; i++) {
SPI_Tx(txbuf[i]);
while(!(isTxIntrPending())) ;
}
while(!(isTxEmpty())) ;
PHY_Deselected();//TOSH_SET_RADIO_CSN_PIN();
}
void sendAMessage(char length,char*tBuf)
{
//unsigned char v;
flushTxfifo();
HPLCC2420_writeTXFIFO(length,tBuf);
if(READ_PIN_CCA)//1表示可以发送了,0表示忙
{
PHY_Selected();
/*Transmission is enabled by issuing aSTXON or STXONCCA command strobe.*/
HPLCC2420_cmd(CC2420_STXON);
while(!(P4IN&0x02));//等待是否有发送
while((P4IN&0x02));//等待发完
/*
do {
SPI_Tx(CC2420_SNOP);
v = SPI_Rx();
} while (!(v & 0x08 )||);//等待是否有发送
do {
SPI_Tx(CC2420_SNOP);
v = SPI_Rx();
if(v&0x20)
HPLCC2420_cmd(CC2420_SFLUSHTX);
} while ((v & 0x08 )); //等待发完
*/
P5OUT^=0X10;
PHY_Deselected();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -