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

查看: 2967|回复: 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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版