?

Log in

 
 
02 January 2017 @ 04:16 pm
CP2102  
Неожиданно оказалось, что у меня завалялось парочка CP2102. Что-ж, развел плату, вытравил. В этот раз получилось крайне удачно.



Но как всегда, с новой железкой почему-то много возни, и заработала она соовсем не сразу. Причина - в старом тестовом проекте одна из ножек UART была заремаплена на PA14. Тупил часа два, пока не решил таки тщательно посмотреть на код. Удивление было то еще, на уровне "как только додумался до такого?". Впрочем, TSSOP20 ответ на этот вопрос.

Еще оказалось, что при питании микроконтроллера STM32F030 от 3.3 V приходящего от CP2102 не всегда пишется Flash микроконтроллера. Подозреваю, что это из-за того, что реальное напряжение 3.47 V. Но может быть причина и другая.

Одна из задач - это протестировать CTS/RTS выводы CP2102. Тут меня тоже ждал косяк. Написал код и стал думать, как бы забить очередь так, чтобы CTS или RTS таки сработали. При baudrate=500000 (а это максимум, что тянет STM32F030) не получилось придумать случая, когда будет проблема с производительностью. Поэтому видимо буду софтварно busy отсылать, если устройство ответить не может.

Про плюсы CP2102 по сравнению со встроенным вариантом COM порта от STM32. Под Windows есть драйвера, и она автоматом распознается. Под Linux эта микросхема распознается именно как Vitrual COM port. STM32 сэмлик распознавался как модем, из-за чего система пыталась его как модем инициализировать, а это неудобно.

С PL2303 была другая засада. У меня они были "пиратские", поэтому новые драйвера под Windows распознавали их как пиратские, и прописывали VID & PID = 0.
 
 
 
engine_runtimeengine_runtime on January 2nd, 2017 03:10 pm (UTC)
///Поэтому видимо буду софтварно busy отсылать, если устройство ответить не может.
Софтверно - свои прелести...
balmerdxbalmerdx on January 2nd, 2017 04:11 pm (UTC)
Мое мнение, что код который невозможно протестировать - бесполезно писать. Софтварно понятно, что делать надо. Просто надо быть готовым к тому, что пакет не полностью придет.
alex_avralex_avr2 on January 2nd, 2017 03:46 pm (UTC)
>>Еще оказалось, что при питании микроконтроллера STM32F030 от 3.3 V приходящего от CP2102 не всегда пишется Flash микроконтроллера.

Попробовать воткнуть 100-200 pF между землей и SWC около МК.
balmerdxbalmerdx on January 2nd, 2017 04:14 pm (UTC)
Там еще один забавный момент. STM32F030 может питаться через пины RX/TX CP2102 даже при отключенном питании. Так что польза от этой платы таки была.
alex_avralex_avr2 on January 2nd, 2017 04:20 pm (UTC)
Ну это в общем-то свойственно большинству КМОП микросхем...
ex0_planet on January 2nd, 2017 08:59 pm (UTC)
> новые драйвера под Windows распознавали их как пиратские, и прописывали VID & PID = 0.

huh? Этим же вроде ftdi страдала (да и то отключили вроде уже), а не пролифик. Или они тоже теперь?
balmerdxbalmerdx on January 3rd, 2017 08:00 am (UTC)
Да, в драйверах для Windows 10 на подлинность чипа. Надо ставить драйвера не самой новой версии, иначе не работает.
Емельянов Эдуард Владимировичeddy_em on January 3rd, 2017 06:25 am (UTC)
Вот я тоже не помню откуда содрал VID/PID, в результате STM32F103 распознается как /dev/ttyACM0, а я хочу нормальный /dev/ttyUSB0, как у всех переходников. Нафиг мне модем?
balmerdxbalmerdx on January 3rd, 2017 08:51 am (UTC)
Если для себя - то запрет обращаться к модему прописывается буквально одной строчкой под Linux, после этого получается вполне честный Virtual Com Port. Но для железки, которой будут пользоваться многие - это проблема. Ибо геморрой с первоначальной настройкой очень плохо воспринимается пользователем.
Емельянов Эдуард Владимировичeddy_em on January 3rd, 2017 08:58 am (UTC)
Не совсем так: мне хочется, чтобы ядро видело не ACM, а "честный" переходник RS-232 <-> USB.
Так как кроме линукса я не приемлю никаких ОС, мне пофиг на остальных.
master_amaster_a on January 3rd, 2017 08:30 pm (UTC)
Но ведь в STM32F0хх можно что угодно прописать. Разве не только стандартные генерируемые кубом дескрипторы заставляют опознавать как /dev/ACM0?

Но у меня похожая ситуация с USB to serial китайского разлива на FTDI FT232RL. Win 10 его опознает как FTDIBUS\COMPORT&VID_0403&PID_6001
а вот MacBook не опознает и отказывается работать с ним. А мой STM32F070 работает со всеми. Без кварца.

Edited at 2017-01-03 09:22 pm (UTC)