DW1000学习之路(一) -------- 使用DW1000发送数据

        DECAWAVE上给了好多例程,第一个便是使用DW1000发送数据,但是官方例程全部都是使用的IDE是CooCox,想要看官方源码的又没有的可以留言找我要。

        我是用的驱动方式为SPI,但是SPI的有四种工作模式,由GPIO.5和GPIO.6上拉或者下拉来决定,具体见下表。

       我使用的为第一种工作模式,因此在第一个跳变沿出发,空闲状态为低电平。

         DW1000发送流程:SPI初始化---->中断初始化---- >复位DW1000---->设置SPI速率为3MHZ以下---->初始化DW1000---->设置SPI速率为高速率模式---->将配置好的结构体写入DW1000---->将需要发送的数据写入DW1000---->DW1000的帧格式控制---->发送数据---->读DW1000寄存器发送状态是否发送完成---->发送完成在该位写1清除标志---->完成。

        以下为代码片

int main(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//中断分组
    delay_init(72);//延时初始化
    DW1000_IRQ_INIT();//中断初始化
    DW1000_SPI_INIT();//SPI初始化
    if(DW1000_Wakeup() != DWT_SUCCESS)//DW1000不能被RESET线唤醒,所以需要将将其唤醒
        while(1);
    reset_DW1000();//复位DW1000
    spi_set_rate_low();//设置DW1000为SPI波特率
    if (dwt_initialise(DWT_LOADNONE) == DWT_ERROR)//初始化DW1000,官方例程
        while (1);
    spi_set_rate_high();//把DW1000的SPI波特率重新设置为高
    dwt_configure(&config);//将配置结构体写入DW1000
    while(1)
    {
        dwt_writetxdata(sizeof(buf), buf, 0); //写数据
        dwt_writetxfctrl(sizeof(buf), 0, 0);//数据格式与是否测距
        dwt_starttx(DWT_START_TX_IMMEDIATE);//开始发送
        while (!(dwt_read32bitreg(SYS_STATUS_ID) & SYS_STATUS_TXFRS));//等待发送完成
        dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_TXFRS);//清除标志位
        delay_ms(1000);//1s发送一次
    }
}

配置结构体

static dwt_config_t config = {
    2,               /*DW1000频道,频道相同才可通讯*/
    DWT_PRF_64M,     /* 脉冲重复频率. */
    DWT_PLEN_1024,   /* 前导码长度. Used in TX only. */
    DWT_PAC32,       /* 接收PAC大小. Used in RX only. */
    9,               /* 发送的前导字节长度,用于侦控制 */
    9,               /* 接收的前导字节长度,用于侦控制 */
    1,               /* 0 使用标准 SFD, 1 使用非标准 SFD. */
    DWT_BR_110K,     /* 数据波特率,相同波特率才可通讯 */
    DWT_PHRMODE_STD, /* PHR长度. */
    (1024 + 1 + 64 - 32) /* SFD 超时时间 (preamble length + 1 + SFD length - PAC size). Used in RX only. *///
};

下图给出了接收时建议使用的PAC大小配置,本文使用前导码长度为1024,PAC大小为32.

发送的数据buf

static u8 buf[]={'M','o','l','i','a','m','!'};

----------------------------再次编辑分割线(2020/3/24)---------------------------

我已经在我的资源里上传了官方例程的代码,以及cocox的IDE安装包。

例程以及cocox

相关文档,共有五份

  • 14
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
aps022_debugging-dw1000-based-products-and-systems_v1.3 是一份关于调试DW1000基于产品和系统的指南。DW1000是一种用于实时定位系统的射频芯片,常用于无线通信和定位应用中。 该文档旨在帮助开发人员和工程师解决与DW1000相关的问题和故障。它提供了一些建议和技巧,以帮助用户更好地调试和诊断DW1000产品和系统。以下是该文档的一些重点: 首先,文档介绍了DW1000的基本功能和特点,以便开发人员对其有更深入的了解。然后,它讨论了一些常见的问题和故障,并提供了具体的解决方法。例如,如果遇到通信丢失或持续断开的问题,可以参考文档中关于配置参数和发送/接收设置的建议。 此外,文档还包含了一些帮助用户调试DW1000产品和系统的实用工具和软件。例如,它提供了一些代码示例和调试工具的链接,以帮助用户更好地理解和发现问题所在。 除了技术内容外,该文档还提供了一些最佳实践和建议,以帮助用户更有效地进行调试工作。例如,开发人员应该充分利用数据记录和监测技术,以便更好地跟踪和诊断问题。 总之,aps022_debugging-dw1000-based-products-and-systems_v1.3 是一份非常有用的指南,可以帮助开发人员和工程师更好地调试和解决DW1000产品和系统中的问题。通过遵循其中的建议和技巧,用户可以更高效地进行调试工作,并最终实现DW1000技术的最佳性能和可靠性。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值