下面一段程序是通过LPC1227控制CC2420发射数据的函数:
uint8_t GPIO_GetValue( uint32_t portNum, uint32_t bitPosi )
{
switch (portNum)
{
case PORT0:
if( LPC_GPIO0->PIN & (1 << bitPosi) )
{
value = 1;
}
else
{
value = 0;
}
break;
………………………………………………
}
#define CC2420_SFD GPIO_GetValue( SFD_PORT, SFD_PIN )
void CC2420_WriteTxFifo(void)
{
uint8_t i;
uint8_t len;
len = CC2420_TX_PSDU[0]>>1;
CC2420_Command(CC2420_SFLUSHTX);
CC2420_Command(CC2420_SFLUSHTX);
SSP_SSEL_LOW;
SSP_SendByte(CC2420_TXFIFO | CC2420_REG_WRITE);
SSP_SendByte(CC2420_TX_PSDU[0]);
for(i=0 ; i<len ; i++)
{
SSP_SendByte(CC2420_TX_PSDU[i+1]);
}
SSP_SSEL_HIGH;
}
void CC2420_TxPacket(void)
{
CC2420_Command(CC2420_SRFOFF);
CC2420_Command(CC2420_STXON);
while(!CC2420_SFD);//程序最后死在这里,如果去掉这个循环,数据发送过程用示波器测量SFD引脚有拉高再拉低的过程,但是加了这句就卡死。
while(CC2420_SFD);
}
请高手指点。。。。
我不清楚是不是LPC1227引脚值读取有误,(SFD用的是PIO2_4引脚),配置为定时器捕获功能。。。