Estoy trabajando en los controladores de Android (código nativo) para el chip USB a serie CH340G. Lo he probado con éxito con baudrate 115200 y Arduino Uno CH340G, pero por alguna razón no funciona con baudrate 57600 y Arduino Nano CH340G.
He consultado los controladores de Linux code :
static int ch341_set_baudrate(struct usb_device *dev,
121 struct ch341_private *priv)
122 {
123 short a, b;
124 int r;
125 unsigned long factor;
126 short divisor;
127
128 if (!priv->baud_rate)
129 return -EINVAL;
130 factor = (CH341_BAUDBASE_FACTOR / priv->baud_rate);
131 divisor = CH341_BAUDBASE_DIVMAX;
132
133 while ((factor > 0xfff0) && divisor) {
134 factor >>= 3;
135 divisor--;
136 }
137
138 if (factor > 0xfff0)
139 return -EINVAL;
140
141 factor = 0x10000 - factor;
142 a = (factor & 0xff00) | divisor;
143 b = factor & 0xff;
144
145 r = ch341_control_out(dev, 0x9a, 0x1312, a);
146 if (!r)
147 r = ch341_control_out(dev, 0x9a, 0x0f2c, b);
148
149 return r;
150 }
¿Qué pasa? ¿Hay alguna diferencia entre 340 y 341 en cuanto a la configuración de la velocidad en baudios? Se agradece cualquier sugerencia.