OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4940|回复: 8

spi发送和接收问题

[复制链接]

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-3-26
在线时间
0 小时
发表于 2015-10-22 19:39:44 | 显示全部楼层 |阅读模式
5金钱
原子哥,spi的无线发送和接收困扰我很长时间了,不知道从何处下手,我是想通过串口观看数据是否正确,可不知道怎么修改,我还想问你一下,无线模块是不是发送和接收都必须得下载程序,如果只是发送下载程序可以吗?我用的发射模块程序下载不进去?

发送部分:
 int main(void)
 {
  u8 a;
int i=0;
//long double M_Old,M_New,differ=0;

u8 char2[30]="Transmit Succeed!\n";
u8 char3[30]="Transmit Fail!\n"; 
//u8 char5[30]="Data no change!\n";

u8 tmp_buf[8];      //?¨????×é
delay_init();     //???±??????????
NVIC_Configuration();  
uart_init(9600); //?®??????????9600
LED_Init();   //????????LED??????????????
// LCD_Init();   //??????LCD
  KEY_Init(); //°??ü??????
  NRF24L01_Init();     //??????NRF24L01  
// POINT_COLOR=RED;//?è??×??????ì?? 
// LCD_ShowString(60,50,200,16,16,"Mini STM32");
// LCD_ShowString(60,70,200,16,16,"NRF24L01 TEST");
// LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
// LCD_ShowString(60,110,200,16,16,"2014/3/12");  
  while(NRF24L01_Check()) //?ì?éNRF24L01??·?????.
{
delay_ms(100);
}   
// LCD_ShowString(60,130,200,16,16,"NRF24L01 OK");
// LCD_Fill(10,150,240,166,WHITE);//??????????????  
// POINT_COLOR=BLUE;//?è??×?????????   
// LCD_ShowString(60,150,200,16,16,"NRF24L01 RX_Mode");
// LCD_ShowString(60,170,200,16,16,"Received DATA:");
NRF24L01_TX_Mode();  
  while(1)
{            
if(NRF24L01_TxPacket(tmp_buf)==TX_OK)//???©??????????,?ò????????.


  delay_ms(500);
  for(i=0;char2!='\0';i++)  //??????,?????"Transmit Succeed!\n"
  {
     USART_SendData(USART1, char2);           
     while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
  } 

}
else
{
  delay_ms(500);
  for(i=0;char3!='\0';i++)//??????,//??????,?????"Transmit Succeed!\n"
  {
    USART_SendData(USART1, char3);           
    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
  }
  
}

a=(tmp_buf[0]-'0')*100+(tmp_buf[1]-'0')*10+(tmp_buf[2]-'0');
a=a;
   LED0=!LED0;
  LED1=!LED1;
}    
}
接收部分:
while(NRF24L01_Check()) //?ì?éNRF24L01??·?????.
{
delay_ms(100);
}   
// LCD_ShowString(60,130,200,16,16,"NRF24L01 OK");
// LCD_Fill(10,150,240,166,WHITE);//??????????????  
// POINT_COLOR=BLUE;//?è??×?????????   
// LCD_ShowString(60,150,200,16,16,"NRF24L01 RX_Mode");
// LCD_ShowString(60,170,200,16,16,"Received DATA:");
NRF24L01_RX_Mode();  
  while(1)
{            
if(NRF24L01_RxPacket(tmp_buf)==0)//???©??????????,?ò????????.
{
unsigned char temp;

 if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET)

USART_ClearITPendingBit(USART1, USART_IT_RXNE);
temp =USART_ReceiveData(USART1);
Uart1_PutChar(temp);
a=(tmp_buf[0]-'0')*100+(tmp_buf[1]-'0')*10+(tmp_buf[2]-'0');
a=a;
        LED0=!LED0;
        LED1=!LED1;
}    
}
}
}
其他都一样,我还想问你一个问题,我是串口用接收的端口(COM口)不知道可以吗?还请原子哥多指教,谢谢!!!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2015-10-22 20:33:27 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-10-22 22:11:28 | 显示全部楼层
NRF要2个模块,一个发送,一个接收.
我们例程,测试的时候,需要2个板子,一个做发送端,另外一个做接收端才可以测试.
串口可以不可以,你printf测试下就可以了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-3-26
在线时间
0 小时
 楼主| 发表于 2015-10-23 08:43:24 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
也就是发射和接收都要下载相应的程序,才能进行通信,如果我的发射模块没下载,也是不能进行通信的了?发射模块的程序下载不进去,这怎么办?还有用串口是把LCD_ShowString换成printf是这样吗?
回复

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-3-26
在线时间
0 小时
 楼主| 发表于 2015-10-23 08:58:44 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
还有一个问题:我新做的板子,PA0,PA1,PA2,PA3都已经使用,如果在nrf24l01中初始化,不是没用了?是不是应该把它改成5,6,7,如果改成这样的话,和spi重复了,或者说换成其他的管脚都可以吗?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-10-25 22:49:49 | 显示全部楼层
回复【4楼】zhoujiaquan:
---------------------------------
可以
回复【5楼】zhoujiaquan:
---------------------------------
根据你自己的原理图修改
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-3-26
在线时间
0 小时
 楼主| 发表于 2015-10-28 20:38:23 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
谢谢原子哥,我有一个问题,可以成功发送数据,但不能接受数据,怎么回事?也就是说开发板可以设为发送模式,收发没有问题,但如果设为接受模式,就收发不正常,不知道怎么回事?还请原子哥指教!!!
回复

使用道具 举报

4

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2015-3-26
在线时间
0 小时
 楼主| 发表于 2015-10-28 21:06:00 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
按理来说接受和发送的灯应该是一直闪才是,现在你按下开关,能接收到正常数据,但闪两下一下就不闪了,还有时收不到数据,这是什么情况!还请原子哥指点!!
回复

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2015-10-29 10:04:53 | 显示全部楼层
调试驱动建议买个逻辑分析仪,很直观就可以看出来了,也不算太贵,USB接到电脑上直接用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 17:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表