Good morning everyone,
Quick introduction and background - I primarily work in SQL databases and dabble in C# so embedded systems is completely outside my forte; however, I’m intrigued to learn how to setup an UWB transceiver as I have been developing a digital twin software for a couple of years as a hobby and I want to do near-real time tracking within it. I’m heavily leveraging AI to speed up my workflow trying to get up to speed on the DWM3001CDK. I purchased two of them roughly a month ago. In that time I’ve successfully gotten the RTT, Shell, LEDs, and Accelerometer functioning. For one brief moment I actually succeeded in getting a Device ID read off my DW3000 before it went into sleep mode I think because my CoPilot chat history tells me I did but I must’ve missed it when fumbling through all the code tweaks. That was two weeks ago and I’ve been getting nothing but 0x0000000 since then. For all the great speed enhancements AI has given me, one catch is that once it exhausts everything it knows it starts to get into rabbit holes. It was convinced my pin mapping was incorrect. I’ll share below what I have as I’m pretty sure I’m reading the schematic properly. I’ve been following the SDK guide and having the AI tools help me develop API calls to the DW3000 to initialize, etc.
If anyone has successfully gotten their Device ID read on DWM3001CDK_C2 using Zephyr + SDK Drivers I’d appreciate any advice or assistance. Let me know if you need to see my repo or any specific part of my project.
Slowly making more progress after another two days reading through docs and driver pointers. My Temperature check was failing and getting stuck in an infinite loop so had to disable it in both initialise and configure API calls. Appears my configure failed and CoPilot is questioning my pins or the logic I’m using for wake up.
/* --------------------------------------------------------------------------
* Wakeup callback (driver will call this during dwt_initialise)
* -------------------------------------------------------------------------- */
static void dw3000_wakeup_ic_zephyr(void)
{
gpio_pin_configure_dt(&cs_gpio, GPIO_OUTPUT);
gpio_pin_set_dt(&cs_gpio, 0);
k_sleep(K_USEC(700));
gpio_pin_set_dt(&cs_gpio, 1);
k_sleep(K_MSEC(2));
gpio_pin_configure_dt(&cs_gpio, GPIO_INPUT);
}
@Wassim_Qorvo,
I saw a comment from you on this post (Getting started with DWM3001CDKE - #8 by Wassim_Qorvo) stating that GPIO 1, 19 is the wakeup pin for DW3000. Does DWM3001CDK_C2 actually have an accessible wakeup pin? When I try to access 1, 19 I get the following on RTT.
The CS assert when I try to force the pins and read back their values appears to not show pin movement so it’s almost like my DW3000 won’t allow me to drive GPIO to wake it.