51uwb.cn

 找回密码
 立即注册

有关Jlink调试时读取SPI数据失败问题

查看数: 8785 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-4-13 18:00

正文摘要:

本帖最后由 maybe0524 于 2020-4-15 10:30 编辑 遇到一个现象,Jlink调试的时候,SPI读DWM1000的ID号全部是FF,多尝试软硬复位现象仍是这样。 完全断电,然后上电才能读取OK。 我想问下在实际项目里边,会遇到 ...

回复

maybe0524 发表于 2020-4-15 16:01:16
蓝点无限 发表于 2020-4-15 15:41
第二点,是拉低一段时间再拉高

我验证一段时间看看
蓝点无限 发表于 2020-4-15 15:41:46
maybe0524 发表于 2020-4-15 15:19
看到了,话说这回复里边的编码风格,看得眼花呀。就看见一个不一样的地方:
1、这个是一样的
2、GPIO_R ...

第二点,是拉低一段时间再拉高
maybe0524 发表于 2020-4-15 15:19:29
蓝点无限 发表于 2020-4-15 13:55
上面提到的代码和你现在用的不一样,你自己对比下

看到了,话说这回复里边的编码风格,看得眼花呀。就看见一个不一样的地方:
1、这个是一样的
2、GPIO_ResetBits(DW1000_RSTn_GPIO, DW1000_RSTn);
       改成:
       GPIO_SetBits(DW1000_RSTn_GPIO, DW1000_RSTn);
3、这个是一样的
蓝点无限 发表于 2020-4-15 13:55:52
maybe0524 发表于 2020-4-15 10:29
多谢回复。我看我这部分的代码没做改动呀。使用默认的就如同你全部说的一样了。

上面提到的代码和你现在用的不一样,你自己对比下
maybe0524 发表于 2020-4-15 10:29:36
tuzhuke 发表于 2020-4-14 20:55
我检查了你提供的硬件和软件,主要怀疑是DWM1000 复位问题,
1 检查连线,发现配置正确

多谢回复。我看我这部分的代码没做改动呀。使用默认的就如同你全部说的一样了。
tuzhuke 发表于 2020-4-14 20:55:16
maybe0524 发表于 2020-4-14 11:46
板子后边的版本拍照

我检查了你提供的硬件和软件,主要怀疑是DWM1000 复位问题,
1 检查连线,发现配置正确

  1. #ifdef STM32F10X_HD
  2.         #define DW1000_RSTn                                        GPIO_Pin_0
  3.         #define DW1000_RSTn_GPIO                        GPIOA
  4. #else
  5.         #define DW1000_RSTn                                        <font color="#ff0000">GPIO_Pin_12</font>
  6.         #define DW1000_RSTn_GPIO                        <font color="#ff0000">GPIOB</font>
  7. #endif
复制代码
如果你对代码进行移植,建议修改成如下方式
  1. #define DW1000_RSTn                                        GPIO_Pin_12
  2. #define DW1000_RSTn_GPIO                        GPIOB
复制代码

2  检查reset时序
  1. void reset_DW1000(void)
  2. {
  3.     GPIO_InitTypeDef GPIO_InitStructure;

  4.     // Enable GPIO used for DW1000 reset
  5.     GPIO_InitStructure.GPIO_Pin = DW1000_RSTn;
  6.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  7.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  8.     GPIO_Init(DW1000_RSTn_GPIO, &GPIO_InitStructure);

  9.     //drive the RSTn pin low
  10.     GPIO_ResetBits(DW1000_RSTn_GPIO, DW1000_RSTn);

  11.     //put the pin back to tri-state ... as input
  12.     GPIO_InitStructure.GPIO_Pin = DW1000_RSTn;
  13.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  14.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  15.     GPIO_Init(DW1000_RSTn_GPIO, &GPIO_InitStructure);

  16.     deca_sleep(2);
  17. }
复制代码
尝试修改为如下:
  1. void reset_DW1000(void)
  2. {
  3. GPIO_InitTypeDef GPIO_InitStructure;

  4. // Enable GPIO used for DW1000 reset
  5. GPIO_InitStructure.GPIO_Pin = DW1000_RSTn;
  6. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  7. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  8. GPIO_Init(DW1000_RSTn_GPIO, &GPIO_InitStructure);
  9. <font color="#ff0000">GPIO_SetBits(DW1000_RSTn_GPIO, DW1000_RSTn);</font>
复制代码
3 在初始化DW1000前,使用软件方式对DW1000 进行reset
  1. <font color="#ff0000">    reset_DW1000();  </font>
  2.     spi_set_rate_low();
  3.     //dwt_configuresleepcnt(50);

  4.     if(dwt_initialise(DWT_LOADUCODE) == -1)
  5.     {
复制代码






蓝点无限 发表于 2020-4-14 11:41:31

把硬件模块后面的版本号给我发下
maybe0524 发表于 2020-4-14 11:17:57
蓝点无限 发表于 2020-4-13 19:00
init pass了,读取是0XFFFFFFF?
如果是0xFFFFFF,继续后面执行,是否可以测距或者定位?

已经回复你了

bphero Inc.  

GMT+8, 2024-11-23 15:16 , Processed in 0.016394 second(s), 7 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

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