Например TDA7294

Форум РадиоКот • Просмотр темы - CH340G - как работать с этим зверем?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Ср сен 17, 2025 03:57:43

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: CH340G - как работать с этим зверем?
СообщениеДобавлено: Вт фев 02, 2016 22:13:51 
Вымогатель припоя

Зарегистрирован: Ср дек 19, 2012 12:16:22
Сообщений: 564
Рейтинг сообщения: 0
Захотелось мне общаться с МК (атмега16) по юсб. Под рукой оказалась микросхема под именем CH340G. Припаял по быстрому туда кварц, D+, D-, питание и виндовс ее увидел, в сисетме появился КОМ3.
Решил пойти дальше - подключил МК (RX,TX), написал прошивку по чтению/записи из/в UART и программку на компе по отправке данных и приему из комп порта. И дальше какая то фигня затворилась.

В МК логика была задумана такая - при чтении байта этот байт отправляется в портB, куда подключены 8 светодиодов (к каждой ноге по одному) что бы увидеть что он получил. В ответ шлем 0.
При нажатии на кнопку зажигаем еще одни светодиод и шлем единичку, при отпускании - тушим и шлем двойку.
МК тактируется от кварца на 8 мегагерц. Скорость по уарту - 9600. Подключение примитивное, даже незнаю чего там описывать. Схема вот
Изображение

Программа на компе еще примитивней. Отправляет в порт $01, $02, $04, $08, $00. Ну что бы разные светодиоды загорались. Ну и раз в полсекунды читаем есть что в порту или нет. Программа на дельфях. Октрываю порт как файл
Код:
Com1:=CreateFile(PChar('Com1'),GENERIC_READ or GENERIC_WRITE,0,nil,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);

пытаюсь настроить
Код:
SetCommState

выдают ошибку. Ладно, фих с вами, пусть по дефолту все.
Пуржим. Пуржится.

А вот дальше начинается свистопляска.
В диспетчере устройств устройство сидит плотно, не пропадает, все стабильно. Но вот работает оно фих знает как.
Иногда при подключении начинают из ком порта литься данные. Ну по логике так ит должно быть, но оттуда льется 120 (десятичная) и шесть нулей. Когда я туда пытаюсь что то отправить, то светодиоды загораются, но как то "от балды", хотя всегда одинаково, но не в соответствии с тем что я посылаю.

а иногда вообще молчек, ничего не отправляется и не посылается, выдает ошибку записи в порт (ну не ошибку, а ничего не пишет).

В чем секрет? Кто работал с этим чудом китайской техники?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CH340G - как работать с этим зверем?
СообщениеДобавлено: Вт фев 02, 2016 23:29:37 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3379
Рейтинг сообщения: 0
Может дело не в микросхеме, а в программах?
Эта микросхема используется в Arduino и обмен данными производится нормально.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CH340G - как работать с этим зверем?
СообщениеДобавлено: Вт фев 02, 2016 23:57:34 
Вымогатель припоя

Зарегистрирован: Ср дек 19, 2012 12:16:22
Сообщений: 564
Рейтинг сообщения: 0
Не исключено. Просто я старался писать максимально просто. Приняли байт - в порт его. Отправляются они тоже просто. Завтра проверю еще разок, если не найду ничего - выложу на всеобщее обозрение...

а эта микросхема да, много где используеться, весь интернет в ссылках на программатор, диагностический модуль для авто и андурину. А как работать саму с ней - две ссылки только и то, там без МК, поверхностно как то :)
Даташит на китайском нашел. Много думал :) Программу нашел тоже на китайском, кнопок больше чем иероглифов в их алфавите. Так и не понял как с ней работать :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CH340G - как работать с этим зверем?
СообщениеДобавлено: Ср фев 03, 2016 10:45:53 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3379
Рейтинг сообщения: 0
alex1126 писал(а):
Так и не понял как с ней работать
Как с COM портом. :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CH340G - как работать с этим зверем?
СообщениеДобавлено: Ср фев 03, 2016 11:22:08 
Друг Кота
Аватар пользователя

Карма: 77
Рейтинг сообщений: 1247
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7518
Рейтинг сообщения: 0
Так вы бы свой код показали-то... :)

Но пока что попробую себя в роли экстрасенса: ваши проблемы смахивают на путаницу с ASCII-представлением и байтовым представлением данных.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CH340G - как работать с этим зверем?
СообщениеДобавлено: Ср фев 03, 2016 11:44:02 
Вымогатель припоя

Зарегистрирован: Ср дек 19, 2012 12:16:22
Сообщений: 564
Рейтинг сообщения: 0
Нашел одну ошибку ( судя по всему не последнюю). Не подключил конденсатор на V3. Поставил. Ситуация изменилась незначительно. Вернее вообще не изменилась, разве что только более уверенно она включается и работает, но смысл не изменился - принимает непонятно что, отправляет непонятно что, теже же самые 120D и нули
Про представление аски и байтов я тоже думал, но там вообще никак не получается. Более того, я когда отправляю байт туда, который должен отправиться на портВ, то в порту все время принимается 0xFE. Если отправляю единицу (0x01) то приниматься 0xFF. Все остальное (0x02, 0x04, 0x08, 0x00) - на порту - 0xFE.
Обратно тоже фигня какая то.

Заметил тут другое - я когда конденсатор то припаял, то функция установки параметров ком порта (SetCommState) стала проходить без ошибок. но все данные - принятые и переданные - нули. Неважно что отправляю на МК или с МК - принимаются нули. Решил посмотреть какие параметры в порту по умолчанию (GetCommState) - а там оказывается скорость 1200, стоп битов нет, битов 7. И при этом мусор шлеться. В свойствах ком порта все как надо - 9600, стоп бит, 8 бит. На каких скоростях то она вообще работать должна?

Тут меня осенило еще - надо на ней Rx и Tx перемкнуть и посмотреть че там будет отправляться и приниматься.

Вообщем пообедаю сейчас и займусь. А вечерком кину исходники свои.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CH340G - как работать с этим зверем?
СообщениеДобавлено: Ср фев 03, 2016 15:58:37 
Вымогатель припоя

Зарегистрирован: Ср дек 19, 2012 12:16:22
Сообщений: 564
Рейтинг сообщения: 0
Нашел ошибку. Подключил напрямую линии rx tx у ch340g и у мк - сами с собой они прекрасно общались. Полез копать прошивку МК. Оказалась ошибка в инициализации уарта. Модуль работы с уарта я брал из готового проекта, где он пошел в серию и прекрасно все работает. Там правда не совсем уарт был, а rs-485, но я подумал что это все фигня. А в модуле этом был включен асинхронный режим. После отключения этого режима все полетело.

Всем спасибо за участие :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CH340G - как работать с этим зверем?
СообщениеДобавлено: Ср фев 03, 2016 20:05:58 
Друг Кота
Аватар пользователя

Карма: 77
Рейтинг сообщений: 1247
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7518
Рейтинг сообщения: 0
Цитата:
А в модуле этом был включен асинхронный режим. После отключения этого режима все полетело.


Э-э-э, а вот с этого момента можно поподробнее? Асинхронный режим - это как раз нормальный, основной режим, используемый в 99% случаев. Режим с тактированием - это экзотика для U(S)ART'а.

Может быть там был включен не асинхронный режим, а режим удвоенной скорости (бит U2Xn)?

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CH340G - как работать с этим зверем?
СообщениеДобавлено: Чт фев 04, 2016 13:08:01 
Вымогатель припоя

Зарегистрирован: Ср дек 19, 2012 12:16:22
Сообщений: 564
Рейтинг сообщения: 0
Да, не асинхронный режим, это я что то не то сказал. В URSEL единичку не писал. Вообщем вот так:
было
Код:
void UART_Init(void)
{
   // Установка скорости обмена
   UBRRH = (F_CPU/(16*UART_BAUD)-1) >> 8;
   UBRRL = (F_CPU/(16*UART_BAUD)-1);

   UCSRB =
      (1<<RXCIE) |   //RXCIE-разрешение прерывания по завершению приёма
      (1<<TXCIE) |   //TXCIE-разрешение прерывания по завершению передачи
      (0<<UDRIE) |   //UDRIE-разрешение прерывания при очистке регистра данных UDR
      (1<<RXEN) |      //RXEN-разрешение приёма
      (1<<TXEN) |      //TXEN-разрешение передачи
      (0<<UCSZ2) |   //UCSZ2-формат посылки (совместно с UCSZ1-UCSZ0 "0"-8 бит данных, "1"-9 бит данных)
      0;
   UCSRC =             //Режим UART, 1 стоп-бит, 8 бит кадр, без паритета
      (1<<UCSZ1) |   //формат посылки UCSZ2-UCSZ0=0b011 - 8 бит в кадре
      (1<<UCSZ0) |
      (0<<UCPOL) |   //UCPOL - для асинхронного режима ДОЛЖЕН быть сброшен в 0
      0;
}



стало
Код:
void USART_Init( unsigned int baud )
{
/* Set baud rate */
UBRRH = (unsigned char)(baud>>8);
UBRRL = (unsigned char)baud;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(0<<USBS)|(3<<UCSZ0);
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CH340G - как работать с этим зверем?
СообщениеДобавлено: Чт фев 04, 2016 14:23:19 
Друг Кота
Аватар пользователя

Карма: 77
Рейтинг сообщений: 1247
Зарегистрирован: Вс мар 29, 2009 22:09:05
Сообщений: 7518
Рейтинг сообщения: 3
Первое - запись

Код:
0<<X


Не имеет смысла. Как ноль ни сдвигай, он нулем и останется...

Устанавливают бит № X так:

Код:
y|=(1<<X);


сбрасывают так:

Код:
y&=~(1<<X);


Это если мы не хотим трогать остальные биты. Если же мы просто инициализируем значение регистра присваиванием, то имеет смысл только установить нужные биты. Во всех остальных автоматически окажутся нули. :idea:

Далее, в приведенном изначальном коде при записи в UCSRC не учитывается бит URSEL. За счет этого портился UBRRH, и ничего не работало, т.к. сбивалась настройка скорости.

_________________
Разница между теорией и практикой на практике гораздо больше, чем в теории.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CH340G - как работать с этим зверем?
СообщениеДобавлено: Чт фев 04, 2016 17:35:58 
Вымогатель припоя

Зарегистрирован: Ср дек 19, 2012 12:16:22
Сообщений: 564
Рейтинг сообщения: 0
YS писал(а):
Первое - запись

да это понятно. просто если потом понадобиться установить единичку, то берем и меняем ноль на единичку, а не дописываем новое выражения сдвига и не ищем названия регистра :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CH340G - как работать с этим зверем?
СообщениеДобавлено: Пн фев 15, 2016 17:14:49 
Нашел транзистор. Понюхал.

Зарегистрирован: Сб фев 02, 2013 10:34:39
Сообщений: 193
Рейтинг сообщения: 0
создал себе проблему и героически ее решает :)))
коротни rx и tx а на комп скачай программу терминал
то что шлёшь в пори тразу и примится.
всё


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y