|
我检查了你提供的硬件和软件,主要怀疑是DWM1000 复位问题,
1 检查连线,发现配置正确
- #ifdef STM32F10X_HD
- #define DW1000_RSTn GPIO_Pin_0
- #define DW1000_RSTn_GPIO GPIOA
- #else
- #define DW1000_RSTn <font color="#ff0000">GPIO_Pin_12</font>
- #define DW1000_RSTn_GPIO <font color="#ff0000">GPIOB</font>
- #endif
复制代码 如果你对代码进行移植,建议修改成如下方式
- #define DW1000_RSTn GPIO_Pin_12
- #define DW1000_RSTn_GPIO GPIOB
复制代码
2 检查reset时序
- void reset_DW1000(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- // Enable GPIO used for DW1000 reset
- GPIO_InitStructure.GPIO_Pin = DW1000_RSTn;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(DW1000_RSTn_GPIO, &GPIO_InitStructure);
- //drive the RSTn pin low
- GPIO_ResetBits(DW1000_RSTn_GPIO, DW1000_RSTn);
- //put the pin back to tri-state ... as input
- GPIO_InitStructure.GPIO_Pin = DW1000_RSTn;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(DW1000_RSTn_GPIO, &GPIO_InitStructure);
- deca_sleep(2);
- }
复制代码 尝试修改为如下:
- void reset_DW1000(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- // Enable GPIO used for DW1000 reset
- GPIO_InitStructure.GPIO_Pin = DW1000_RSTn;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(DW1000_RSTn_GPIO, &GPIO_InitStructure);
- <font color="#ff0000">GPIO_SetBits(DW1000_RSTn_GPIO, DW1000_RSTn);</font>
复制代码 3 在初始化DW1000前,使用软件方式对DW1000 进行reset
- <font color="#ff0000"> reset_DW1000(); </font>
- spi_set_rate_low();
- //dwt_configuresleepcnt(50);
- if(dwt_initialise(DWT_LOADUCODE) == -1)
- {
复制代码
|
|