登录
|
注册会员
开启辅助访问
设为首页
收藏本站
扫一扫关注官方微信
论坛
BBS
M币充值
M currency prepaid phone
M币获取
附件中心
搜索
search
全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
MCU资讯论坛
»
论坛
›
单片机论坛
›
51单片机论坛
›
51_nrf905 spi通信编程 从底层到应用
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版
51_nrf905 spi通信编程 从底层到应用
[复制链接]
3522
2
ad***
管理员
发表于 2010-6-14 22:47:07
|
查看全部
|
阅读模式
本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要
登录
才可以下载或查看,没有帐号?
注册会员
x
51_nrf905 spi通信编程 从底层到应用
无线nrf905(PTR8000模块)源程序+原理图DDB+图片这个东东移植到
ARM
上也是非常不错的. 转载:
原文:
环境:ICC
AVR
MEGA16L+11.0592M
讯通的PTR8000和PTR8000+模块,内部芯片是nrf905
SPI方式操作,有详细注析
1天调通,当时是SPI相位方式照马老师的设成了01模式,结果读出的全是00,郁闷了好久:)
目录中PTR8000是源程序,ddb是原理图
nrf905.c中的头文件定义是抄HotPower的,特此感谢!
#include <reg52.h>
#include <ABSACC.h>
#include <intrins.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
//配置口定义//
sbit TXEN = P1^7; //1号端口的7号引脚连的TXEN即传输模式使能
sbit TRX_CE = P1^6; //1号端口的6号引脚连的TRXCE
sbit PWR = P1^5; //1号端口的5号引脚连的PWR
//SPI口定义//
sbit MISO = P1^2;
sbit MOSI = P1^3;
sbit SCK = P1^1;
sbit CSN = P1^0;
sbit P2_0 = P2^0;
//状态输出口//
sbit DR = P1^4;
sbit LCD = P3^2;
//RF寄存器配置//
unsigned char idata RFConf[11]=
{
0x00, //配置命令//
0x6C, //CH_NO,配置频段在433.2MHZ
0x0E, //输出功率为10db,不重发,节电为正常模式
0x44, //地址宽度设置,为4字节
0x03,0x03, //接收发送有效数据长度为3字节
0xE7,0xE7,0xE7,0xE7, //接收地址
0xDE, //CRC充许,16位CRC校验,外部时钟信号使能,16M晶振
};
uchar TxRxBuffer[5];
bit lcdbit;
///////////延时/////////////////
void Delay(uint x) //时钟延时函数
{
uint i;
for(i=0;i<x;i++){
_nop_();
}
}
////////////用SPI口写数据至NRF905内//////////
void SpiWrite(unsigned char b)
{
unsigned char i=8;
while (i--)
{
Delay(10); //延时10秒
SCK=0; //当SCK下降沿时
MOSI=(bit)(b&0x80); //将b的最高位移入MOSI数据线
b<<=1 ; //b左移一位
Delay(10); //延时10秒
SCK=1; //SCK上升沿
Delay(10); //延时10秒
SCK=0; //SCK下降沿
}
SCK=0;
}
///////////////from 905 read data////////////////
unsigned char SpiRead(void)
{
register unsigned char i=8;
unsigned char ddata=0;
while (i--)
{
ddata<<=1 ; //ddata左移一位
SCK=0; //SCK下降沿
_nop_();
_nop_(); //延时
ddata|=MISO; //将来自MISO的一位数据保存在ddata的最低位
SCK=1 ; //上升沿
_nop_();
_nop_(); //延时
}
SCK=0; //下降沿
return ddata; //返回从MISO移入的一个字符
}
///////////////接收数据包/////////////////
void RxPacket(void)
{
uchar i;
i=0;
while(DR)
{
TxRxBuffer = SpiRead();
i++;
}
}
/*
;写发射数据命令:20H
;读发射数据命令:21H
;写发射地址命令:22H
;读发射地址命令:23H
;读接收数据命令:24H
*/
void TxPacket(void)
{
TXEN=1;
CSN=0;
SpiWrite(0x22); //写发送地址,后面跟4字节地址//
SpiWrite(0xE7);
SpiWrite(0xE7);
SpiWrite(0xE7);
SpiWrite(0xE7);
CSN=1;
_nop_();
_nop_();
CSN=0;
SpiWrite(0x20); //写发送数据命令,后面跟三字节数据//
SpiWrite(0x01);
SpiWrite(0x02);
SpiWrite(0x03);
CSN=1;
_nop_();
_nop_();
TRX_CE=1; //使能发射模式//
Delay(50); //等带发送完成//
TRX_CE=0;
while(!DR);
}
////////////////等待接收数据包///////////////////
uchar temp;
void Wait_Rec_Packet(void)
{
TXEN=0;
TRX_CE=1;
while(1)
{
if(DR)
{
TRX_CE=0; //如果数据准备好,则进入待机模式,以便SPI口操作
CSN=0;
SpiWrite(0x24);
RxPacket();
CSN=1;
temp=TxRxBuffer[0]+TxRxBuffer[1]+TxRxBuffer[2];
if(temp==0x06)
{
lcdbit=!lcdbit;
LCD=lcdbit; //如果接收的数据正确
}
break;
}
}
}
////////////初始化配置寄存器////////////////
void Ini_System(void)
{
uchar i;
LCD=0;
Delay(10000);
LCD=1;
lcdbit=1;
CSN=1;
SCK=0;
PWR=1;
TRX_CE=0;
TXEN=0;
_nop_();
CSN=0;
for(i=0;i<11;i++)
{
SpiWrite(RFConf);
}
CSN=1;
PWR=1;
TRX_CE=1;
TXEN=0;
Delay(1000);
}
void main(void)
{
uchar i;
Ini_System();
PWR=0;
while(1)
{
Wait_Rec_Packet(); //等待接收完成
// for(i=0;i<2;i++)
// Delay(65530);
TxPacket();
}
}
复制代码
举报
回复
2 个评论
MCU***
新手上路
发表于 2011-8-18 11:09:56
|
显示全部楼层
{:e177:}有用,顶一个
举报
回复
支持
反对
薛***
新手上路
发表于 2012-3-11 15:15:10
|
显示全部楼层
好东西啊,定
举报
回复
支持
反对
返回列表
*
滑块验证:
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册会员
本版积分规则
发表回复
回帖后跳转到最后一页
回复
转播
评分
分享
打开支付宝扫一扫,最高立得1212元红包
搜索
本版
帖子
用户
热搜:
传感器
51串口程序
电子管放大器
夾式電表
夾式電流
Mentor论坛
打印机
版块推荐
百宝箱
My 布拉格
无边框Z9
Z9Max
Z9mini
nubia动态
问题 & 建议
资源分享
爱拍
同城会
牛仔生活
查看论坛所有版块>>
每日签到
论坛任务
摄影技巧
跳蚤市场
互助问答
论坛导读
申请内测
红包中心
每日摇一摇
活动中心
网站地图
官方旗舰店
图文热点
VKL144A TSSOP48 点阵式液晶驱动芯片/低功
产品品牌:永嘉微电/VINKA 产品型号:VKL44A 封装形式:TSSOP48 概述 VKL144是
高抗干扰液晶显示驱动/省电液晶驱动IC/LCD
产品品牌:永嘉微电/VINKA 产品型号:VKL128 封装形式:SSOP44 概述 VKL128是一
VK2C23A/B LQFP64/48LCD驱动控制器/高抗干
产品品牌:永嘉微电/VINKA 产品型号:VK2C23A/B 封装形式:LQFP64/48 概述 VK2C
高抗干扰液晶驱动/点阵式液晶显示IC/VK2C21
产品品牌:永嘉微电/VINKA 产品型号:VK2C21D 封装形式:SOP16 概述 VK2C21D是
I2C通信接口段码液晶驱动芯片VK2C21C SOP20
产品品牌:永嘉微电/VINKA 产品型号:VK2C21C 封装形式:SOP20 概述 VK2C21C是
更多
精华推荐
VKL144A TSSOP48 点阵式液晶驱动芯片/低功
高抗干扰液晶显示驱动/省电液晶驱动IC/LCD
VK2C23A/B LQFP64/48LCD驱动控制器/高抗干
高抗干扰液晶驱动/点阵式液晶显示IC/VK2C21
I2C通信接口段码液晶驱动芯片VK2C21C SOP20
VK2C21B SOP24高抗干扰LCD液晶段码驱动芯片
低成本、高性能、带EEPROM了解一下
工控仪表/水电气表LCD驱动/抗干扰液晶段码
更多
社区学堂
VKL144A TSSOP48 点阵式液晶驱动芯片/
高抗干扰液晶显示驱动/省电液晶驱动IC/
VKL144A TSSOP48 点阵式液晶驱动芯片/低功
产品品牌:永嘉微电/VINKA 产品型号:VKL44A 封装形式:TSSOP48 概述 VKL144是
高抗干扰液晶显示驱动/省电液晶驱动IC/LCD
产品品牌:永嘉微电/VINKA 产品型号:VKL128 封装形式:SSOP44 概述 VKL128是一
VK2C23A/B LQFP64/48LCD驱动控制器/高抗干
产品品牌:永嘉微电/VINKA 产品型号:VK2C23A/B 封装形式:LQFP64/48 概述 VK2C
更多
客服中心
QQ:187196467
服务时间:周一至周日 8:30-20:30
在线客服
客服微博
产品咨询
售后中心
关注我们
关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
QQ:187196467
周一到周日 8:30-22:00 (全年无休)
7 x 24小时在线客服
手机版
Powered by
MCUZX!
X3.4 © 2008-2015
MCU资讯论坛
版权所有
京ICP备18035221号-2
客服QQ: 187196467
技术支持:
MCU资讯论坛
|
网站地图
快速回复
返回顶部
返回列表