找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2323|回复: 1
打印 上一主题 下一主题
收起左侧

nRF24L01程序从51移植到stm32不能发送数据,总返回0x0e或0x0f

[复制链接]
跳转到指定楼层
楼主
ID:285261 发表于 2018-11-26 14:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 飛饵 于 2018-11-26 19:41 编辑

在51上能收能发。移植到STM32上发不出去。用模拟SPI
IO口配置:
  1. void NRF24L01_GPIO_Configuration()
  2. {
  3. GPIO_InitTypeDef GPIO_Initstructure;

  4. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOG, ENABLE);

  5. /*CE, CSN。PG8, PG6*/
  6. GPIO_Initstructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_8;
  7. GPIO_Initstructure.GPIO_Mode = GPIO_Mode_Out_PP;
  8. GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
  9. GPIO_Init(GPIOG, &GPIO_Initstructure);

  10. /*IRQ, PG7*/
  11. GPIO_Initstructure.GPIO_Pin = GPIO_Pin_7;
  12. GPIO_Initstructure.GPIO_Mode = GPIO_Mode_IPU;
  13. GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
  14. GPIO_Init(GPIOG, &GPIO_Initstructure);

  15. /*SCK, MOSI。B13, PB15*/
  16. GPIO_Initstructure.GPIO_Pin = GPIO_Pin_13 |GPIO_Pin_15;
  17. GPIO_Initstructure.GPIO_Mode = GPIO_Mode_Out_PP;
  18. GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
  19. GPIO_Init(GPIOB, &GPIO_Initstructure);

  20. /*MISO。PB14*/
  21. GPIO_Initstructure.GPIO_Pin = GPIO_Pin_14;
  22. GPIO_Initstructure.GPIO_Mode = GPIO_Mode_IPU; //MISO使用上拉输入
  23. GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz;
  24. GPIO_Init(GPIOB, &GPIO_Initstructure);
  25. }
复制代码
读写时序
  1. u8 SPI_RWByte(u8 dat)
  2. {
  3.         u8 i;
  4.         
  5.         SCK = 0; //时钟先拉低
  6.         for(i=0; i<8; i++)
  7.         {
  8.                 MOSI = dat >> 7; //最高位拿出来发送
  9.                 dat = dat << 1; //下一个bit
  10.                 SCK = 1; //拉高,上升沿发送数据到从设备
  11.                
  12.                 if(MISO) dat |= 0x01; //同时接收一个bit数据,存进最低位
  13.                
  14.                 SCK = 0; //拉低,下降沿数据被读到主机。                        
  15.         }
  16.         return dat;
  17. }
复制代码

测试过写地址后又读出来,数据正确,时序应该没问题的。但读回来状态总是0x0e或0x0f。试了几次,有时候能发出去了,但是断电后重新上电也不能发了。51写的怎么搞都没事


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:155507 发表于 2019-1-6 08:53 | 只看该作者
注意大小端模式之问题,STM32是小端的,89C52是大端的。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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