[CDC ACM USB Example] DTR Issue

Hello,

I am programming BLE with the nRF52840-DK. [Toolchain Manager: v1.3.0, IDE: Visual Studio Code (VSCode), SDK: ncs v2.6.0, window11 pro]

I'm studying the CDC_ACM Example to increase the data rate between the PC and nRF52840dk. However, I'm facing an issue.

There was an issue in the original example( CDC_ACM Example )where it doesn't execute properly.

I can't seem to get out of the while loop below. I can't understand why. Please help :( 

while (true) {
		uint32_t dtr = 0U;
		ret = uart_line_ctrl_get(uart_dev, UART_LINE_CTRL_DTR, &dtr);
		LOG_INF("uart_line_ctrl_get >>> err:%d", ret);
		if (dtr) {
			break;
		} else {
			k_sleep(K_MSEC(100));
		}
	}

- Here is Main.c:

#include <stdio.h>
#include <string.h>
#include <zephyr/device.h>
#include <zephyr/drivers/uart.h>
#include <zephyr/kernel.h>
#include <zephyr/sys/ring_buffer.h>
#include <zephyr/usb/usb_device.h>
#include <zephyr/usb/usbd.h>
#include <zephyr/logging/log.h>
LOG_MODULE_REGISTER(cdc_acm_echo, LOG_LEVEL_INF);
const struct device *const uart_dev = DEVICE_DT_GET_ONE(zephyr_cdc_acm_uart);
#define RING_BUF_SIZE 1024
uint8_t ring_buffer[RING_BUF_SIZE];
struct ring_buf ringbuf;

int main(void){
	int ret;
	if (!device_is_ready(uart_dev)) {
		LOG_ERR("CDC ACM device not ready");
		return 0;
	}
	ret = usb_enable(NULL);
	LOG_INF("usb_enable >>>> err:%d",ret);
	ring_buf_init(&ringbuf, sizeof(ring_buffer), ring_buffer);
	LOG_INF("Wait for DTR");
	while (true) {
		uint32_t dtr = 0U;
		ret = uart_line_ctrl_get(uart_dev, UART_LINE_CTRL_DTR, &dtr);
		LOG_INF("uart_line_ctrl_get >>> err:%d", ret);
		if (dtr) {
			break;
		} else {
			k_sleep(K_MSEC(100));
		}
	}
	LOG_INF("DTR set");
	return 0;
}

- Here is prj.conf

CONFIG_STDOUT_CONSOLE=y
CONFIG_USB_DEVICE_STACK=y
CONFIG_USB_DEVICE_PRODUCT="Zephyr CDC ACM sample"
CONFIG_USB_DEVICE_PID=0x0001
CONFIG_LOG=y
CONFIG_USB_DRIVER_LOG_LEVEL_ERR=y
CONFIG_USB_DEVICE_LOG_LEVEL_ERR=y
CONFIG_SERIAL=y
CONFIG_UART_INTERRUPT_DRIVEN=y
CONFIG_UART_LINE_CTRL=y
CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=n


- Debugging result in PuTTY:

*** Booting nRF Connect SDK v3.5.99-ncs1 ***

[00:00:00.253,570] <inf> cdc_acm_echo: usb_enable >>>> err:0

[00:00:00.253,570] <inf> cdc_acm_echo: Wait for DTR

[00:00:00.253,570] <inf> cdc_acm_echo: uart_line_ctrl_get >>> err:0

[00:00:00.353,637] <inf> cdc_acm_echo: uart_line_ctrl_get >>> err:0

[00:00:00.453,735] <inf> cdc_acm_echo: uart_line_ctrl_get >>> err:0

[00:00:00.553,833] <inf> cdc_acm_echo: uart_line_ctrl_get >>> err:0

[00:00:00.653,930] <inf> cdc_acm_echo: uart_line_ctrl_get >>> err:0

[00:00:00.754,028] <inf> cdc_acm_echo: uart_line_ctrl_get >>> err:0

[00:00:00.854,125] <inf> cdc_acm_echo: uart_line_ctrl_get >>> err:0

-  PuTTY Configuration:

- Here is Device Manager(Connecting between IMCU USB of nRF52840dk and PC USB):

Parents Reply Children
No Data
Related