I made a pcb that works on 3.3v (actually the supply is 3v but i don't think this is a problem), it uses ch34 chip in 3.3v mode like it's on the picture, i connected the rx/tx correctly, d+/d- correctly, 100nf cap from dtr to reset, v3 to 3.3v, and sometimes it detects it and i can select a port in the ide, but i just stk500 timeout error, i uploaded the minicore atmega328 bootloader with uart0 option, brownout detection with 2.7v, correct type, and i can open the serial monitor but it doesn't want to upload, i checked with the oscilloscope and it sends the reset pulse to the uc, but sometimes it looks like the chip gets destroyed, i had to replace it and it doesn't show up in the usb ports anymore, also each time it was detected that was only on the arduino ide with terminal lsusb command it didn't list ch340 chip like it does with arduino it doesn't draw any excessive current, so i really don't know what's the problem.
If you are running the board at 3.3 volts, you should not have 5v going to Vcc of the CH340 USB/UART chip.
Here is an example of a 3.3/5 volt switchable circuit using the CH340: https://files.seeedstudio.com/wiki/USB_To_Uart_5V_3V3/res/USB_To_Uart_5V_3V3_v1.pdf
I'd also put a decoupling capacitor on V3.
I've designed this CH340 based circuit which runs also at 3.3 volts (jumper switchable) Yet Another UPDI Programmer . Maybe you see something there which helps.
