📄 使用lpc2131对nrf905进行配置通信.txt
字号:
UART0_SendByte(Buffer2[i]);
}
IO0SET |= nRF905_CSN;
}
//配置nRF905
void Config905(void)
{
nrf905_StandBy();
IO1CLR |= nRF905_CSN; // Spi enable
for write a spi command
delay(1);
nrf905_SpiRW(WC); // Write
config command
nrf905_SpiRW(CH_NO_BYTE); //中心频率低8位
nrf905_SpiRW(PA_PWR_10dBm | HFREQ_PLL_433MHz);
//发射+10dBm,发射频率433MHz,中心频率第9位=0
nrf905_SpiRW(TX_AFW_4BYTE | RX_AFW_4BYTE);
//接收地址宽度4字节,发送地址宽度4字节
nrf905_SpiRW(RX_PW_32BYTE); //接收数据宽度32字节
nrf905_SpiRW(TX_PW_32BYTE); //发送数据宽度32字节
nrf905_SpiRW(RX_ADDRESS_0); //接收有效地址第1字节
nrf905_SpiRW(RX_ADDRESS_1); //接收有效地址第2字节
nrf905_SpiRW(RX_ADDRESS_2); //接收有效地址第3字节
nrf905_SpiRW(RX_ADDRESS_3); //接收有效地址第4字节
nrf905_SpiRW(CRC16_EN | XOF_12MHz);
//CRC16模式使能,晶体振荡器频率12MHz
delay(1);
IO1SET |= nRF905_CSN; // Disable Spi
nrf905_SpiTest();
nrf905_RxOn();
IO1CLR |= LED7;
delay(40);
IO1SET |= LED7;
delay(40);
//UART0_SendStr ("Config905 OK");
}
//读出接收到的数据
void nrf905_ReadData(void)
{
uint8 i;
IO1CLR |= nRF905_CSN;
nrf905_SpiRW(RRP); //读RxPayload
for (i=0;i<BufferSize;i++)
{
Buffer2[i]=nrf905_SpiRW(0);//read...
}
IO1SET |= nRF905_CSN;
}
void nrf905_SendData(void)
{
uint8 i;
nrf905_TxOn();
IO1CLR |= nRF905_CSN;
nrf905_SpiRW(WTA); //写Tx地址
nrf905_SpiRW(TX_ADDRESS_0);
nrf905_SpiRW(TX_ADDRESS_1);
nrf905_SpiRW(TX_ADDRESS_2);
nrf905_SpiRW(TX_ADDRESS_3);
IO1SET |= nRF905_CSN;
delay(1);
IO1CLR |= nRF905_CSN;
nrf905_SpiRW(WTP); //写TxPayload
nrf905_SPISendStr(flagtext);
for (i=0;i<BufferSize;i++)
{
nrf905_SpiRW(Buffer1[i]);
}
IO1SET |= nRF905_CSN;
}
void Receiver(void)
{
uint8 i;
//if ((IO1PIN&nRF905_AM))==0) return;//一般先AM=1指示地址匹配对
if ((IO1PIN&nRF905_DR)==0) return;//DR=1时表示数据接收对而且Crc正确
//已经接收到数据
nrf905_ReadData();//读出...
for (i=0;i<32;i++)
{
if (Buffer2[i]!=(i+i))
return;
}
//数据接收正确...灯指示
IO1CLR = LED6;
delay(50);
IO1SET = LED6;
//从机回送数据包,这样双方都能指示是否收到有效数据包
#ifndef MASTER
Transmitter();
#endif
}
void Transmitter(void)
{
uint8 i;
for (i=0;i<32;i++)
Buffer2[i]=i+i;
nrf905_SendData();//发送数据
while((IO1PIN&nRF905_DR)== 0);
delay(1);
nrf905_RxOn();//重新回到接收状态
}
int main(void)
{
WDT_INIT(); //看门狗初始化
PINSEL2 = PINSEL2&(~0x08); // P1[25:16]连接GPIO
IO1DIR |= 0x397<<16;//p1.16 p1.17 p1.18 p1.20 p1.23 p1.24
p1.25为输出
IO1CLR |= LED8;
delay(50);
IO1SET |= LED8;
delay(50);
IO1CLR |= LED7;
delay(50);
IO1SET |= LED7;
delay(50);
IO1CLR |= LED6;
delay(50);
IO1SET |= LED6;
delay(50);
IRQEnable(); //使能IRQ中断
MSPI_Init();
Config905();
UART_Init (); //系统初始化
U0IER = 0x01; //允许串口0接收中断
while(1)
{
IO1CLR |= LED8;
delay(40);
WDT_CLEAR(); //看门狗清零
delay(5);
#ifdef MASTER
Transmitter();
#endif
Receiver();
}
return 0;
}
电子连接器解决方案
关于论坛管理,收集意见和建议。
为下一阶段的社区活动,向广大财主化缘,募集奖品
热门讲座:采用Linux和MicroBlaze快速启动嵌入式系统开发
意法半导体STM32全国巡回研讨会
相关帖子
请教nRF905配置程序是否正确(HotPower,汽车老大,圈圈帮忙) - ZX1221 2006-5-19 10:00:23 [ID:2094138
点击:2103] (10140 Bytes) (12)
谢谢 - ZX1221 2006-5-22 10:00:17 [ID:2096953 点击:439] (48 Bytes) (0)
ARM的地址配置不需要51那么烦琐~~~int就是32位 - hotpower 2006-5-22 9:56:14 [ID:2096946
点击:351] (20 Bytes) (0)
哈哈~~~这次见到真面目了~~~ - hotpower 2006-5-22 9:53:38 [ID:2096942 点击:360] (92
Bytes) (0)
哈哈~~~我那是用430做实验~~~后面不是有对的吗??? - hotpower 2006-5-22 9:51:15 [ID:2096937
点击:498] (4170 Bytes) (0)
郁闷 - ZX1221 2006-5-22 9:39:32 [ID:2096917 点击:339] (157 Bytes) (0)
继续倒塌 - hotpower 2006-5-22 9:32:52 [ID:2096902 点击:412] (8072 Bytes) (0)
倒塌了~~~我用了半天就移植到LPC2138上了 - hotpower 2006-5-22 9:32:10 [ID:2096899 点击:458]
(4568 Bytes) (0)
程序没问题啊 - ZX1221 2006-5-22 8:57:35 [ID:2096854 点击:445] (156 Bytes) (0)
抱歉,没用过905。这个配置应该比较容易吧, - computer00 2006-5-19 13:29:25 [ID:2094401 点击:305]
(16 Bytes) (0)
呵呵 - ZX1221 2006-5-19 12:47:51 [ID:2094366 点击:338] (80 Bytes) (0)
嘿嘿,我知道 - chinasunfa 2006-5-19 10:09:19 [ID:2094151 点击:339] (64 Bytes) (0)
头文件 - ZX1221 2006-5-19 10:03:25 [ID:2094146 点击:438] (650 Bytes) (0)
最新100贴和BBS阅读方式目前只提供浏览功能;需要回复请 先进入本版版面
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -