你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 2971|回复: 2

STM8 连接NRF24L01遇到问题 求助各位大侠

[复制链接]

1

主题

3

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2013-2-7 18:52:38 | 显示全部楼层 |阅读模式
最近买了几块NRF24L01的蓝牙模块,用的单片机是STM8S103K3搞了,连接蓝牙模块搞了好几天也没搞出什么名堂,网上找了不少程序,找的不少都是一个版本的,自己试着改改也没用,最后删的就剩下读取NRF24L01的某一寄存器的值,显示在八位的led上,然后对照一下该寄存器的默认值,来确定下通讯成功没,结果读取到的和默认值也不一样,有时读取到的还是固定值,用的是单片机的SPI接口,感觉程序也没什么问题,无奈!!! 程序贴出来 哪位大侠帮忙看看那里的问题   (焊接的两块板子 四块蓝牙模块  而且硬件电路对照了 也没有什么问题)

/* MAIN.C file
 *
 * Copyright (c) 2002-2005 STMicroelectronics
 */
#include
#include
#define uchar unsigned char
#define NRF24L01_CEH   PB_ODR=PB_ODR|0x01  //NRF24L01 CE置高
#define NRF24L01_CEL   PB_ODR=PB_ODR&0xFE  //NRF24L01 CE置低
#define NRF24L01_CSNH  PB_ODR=PB_ODR|0x04  //NRF24L01  CSN置高
#define NRF24L01_CSNL  PB_ODR=PB_ODR&0xFB  //NRF24L01  CSN置低
#define LED PD_ODR                         //定义输出LED
#define PE5_IN (PE_IDR&0X20)               //定义按键
void init_io(void)  //初始化
{
 PB_DDR=0X06;  //配置PB1(CE) BP2(CSN)为输出模式
 PB_CR1=0X06; 
  NRF24L01_CEL; //CE置低
 NRF24L01_CSNH;//SPI 禁止
 
 
 PD_DDR=0XFF;        //配置为开漏输出模式
 PD_DDR=0XFF;        //PD口配置为输出(包含IRQ)
 PD_ODR=0X80;        //IRQ输出高
 PD_DDR=0X7F;        //IRQ为输入模式
 PD_CR1=0XfF;        //配置其他端口为推挽输出
 PE_DDR=0Xdf;
 PE_CR1=0X20;        //PE5设置为上拉输入(按键
 PE_CR2=0X00;
}
unsigned char SPI_RW(unsigned char byte) //写一个字节
{
  while(!(SPI_SR & 0x02));             /* 等待发送寄存器为空 */
  SPI_DR = byte;                       /* 将发送的数据写到数据寄存器 */
  while(!(SPI_SR & 0x01));             /* 等待接受寄存器满 */
  return SPI_DR;                       /* 读数据寄存器 */
}
uchar SPI_Read(uchar reg)              //读寄存器里的内容
{
  uchar reg_val;
   NRF24L01_CSNL;              // CSN置低,开始传输数据
   SPI_RW(reg);                // 选择寄存器
   reg_val = SPI_RW(0);        // 然后从该寄存器读数据
   NRF24L01_CSNH;              // CSN拉高,结束数据传输
   return(reg_val);            // 返回寄存器数据
}
void main()
{
 uchar n;
 CLK_ECKR|=0X1;//开启外部时
 while(!(CLK_ECKR&0X2));//等待外部时钟
 CLK_CKDIVR&=0XF8;//CPU无分
 CLK_SWR=0XB4;//选择外部时
 while(!(CLK_SWCR&0X8));//这里要
 CLK_SWCR|=0X2;//使能外部
  SPI_CR1=0X2c; //配置SPI模式  暂时禁止SPI等待配置完成再打开
 SPI_CR2=0X03; //配置SPI模式
 SPI_ICR = (0
<
回复

使用道具 举报

3

主题

11

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2013-2-20 22:03:20 | 显示全部楼层

RE:STM8 连接NRF24L01遇到问题 求助各位大侠

未看到你的SPI_SCK、SPI_MOSI、SPI_MISO的引脚的设置呢?
回复 支持 反对

使用道具 举报

8

主题

407

回帖

0

蝴蝶豆

高级会员

最后登录
2016-11-24
发表于 2015-11-13 09:56:00 | 显示全部楼层
“几块NRF24L01的蓝牙模块”?到底是NRF24L01还是蓝牙?这是一个模块吗楼主?
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版