Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: потеря данных при передаче через UART
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Andrey_C
Добрый день! Помогите пожалуйста разобраться в следующем:

С микроконтроллера на внешнее устройство через UART с частотой около 2 Гц уходят наборы управляющих команд. Общий объем данных в одном наборе около 1500 байт.
При передаче происходит потеря данных, например: из этих 1500 байт может сначала послать сколько-то байт данных, потом сколько нибудь пропустит и дослать оставшиеся ;
либо может передать часть данных,и начать передавать набор с начала.
сначала отключил все прерывания(изначально отправлялось по таймеру), убрал все вызовы функций опроса датчиков,клавиатуры.
В итоге просто запихал все в массив,который обхожу в цикле и все равно что-то не получается локализовать причину такого поведения программы.
Заранее благодарю.
код прилагаю:

CODE

#include "stm32f10x.h"
#include <stdio.h>
#include <string.h>
char KUKU[]="GR SF 1\r\nGR T 20 0 x1\r\nGR SC WHITE\r\nGR L 408 270 408 200 0\r\nGR L 408 290 408 310 0\r\n\
GR L 408 310 408 360 1\r\nGR L 398 280 378 280 0\r\nGR L 378 280 328 280 1\r\nGR L 418 280 438 280 0\r\nGR L 438 280 488 280 1\r\n\
GR SC WHITE\r\nGR R 670 1 760 46 1\r\nGR B 660 11 670 36\r\nGR B 680 5 760 42\r\nGR SF 1\r\nGR T 20 550 -60°C\r\nGR SF 1\r\n\
GR T 300 550 Азимут: -1°\r\nGR SC WHITE\r\nGR L 20 416 31 433 0\r\nGR L 31 433 42 444 0\r\nGR L 42 444 53 452 0\r\n\
GR L 53 452 64 458 0\r\nGR L 64 458 75 463 0\r\nGR L 75 463 86 466 0\r\nGR L 86 466 97 469 0\r\nGR L 97 469 108 472 0\r\n\
GR L 108 472 119 474 0\r\nGR L 119 474 130 476 0\r\nGR L 130 476 141 478 0\r\nGR L 141 478 152 479 0\r\nGR L 152 479 163 480 0\r\n\
GR L 163 480 174 481 0\r\nGR L 174 481 185 483 0\r\nGR L 185 483 196 485 0\r\nGR L 196 485 207 486 0\r\nGR L 207 486 218 487 0\r\n\
GR L 218 487 229 488 0\r\nGR L 229 488 240 489 0\r\nGR L 240 489 251 489 0\r\nGR L 251 489 262 490 0\r\nGR L 262 490 273 491 0\r\n\
GR L 273 491 284 491 0\r\nGR L 284 491 295 492 0\r\nGR L 20 500 295 500 0\r\nGR SF 0\r\nGR L 20 500 20 505 0\r\nGR T 20 507 1\r\n\
GR L 64 500 64 505 0\r\nGR T 64 507 2\r\nGR L 108 500 108 505 0\r\nGR T 108 507 3\r\nGR L 152 500 152 505 0\r\nGR T 152 507 4\r\n\
GR L 185 500 185 505 0\r\nGR T 185 507 5\r\nGR L 207 500 207 505 0\r\nGR T 207 507 6\r\nGR L 229 500 229 505 0\r\nGR T 229 507 7\r\n\
GR L 251 500 251 505 0\r\nGR T 251 507 8\r\nGR L 273 500 273 505 0\r\nGR T 273 507 9\r\nGR L 295 500 295 505 0\r\nGR T 295 507 10\r\n\
GR SC WHITE\r\nGR C 700 500 50 0\r\nGR L 700 500 699 450\r\nGR SF 1\r\nGR T 691 450 c\r\nGR T 691 525 ю\r\nGR T 730 486 в\r\nGR T 655 486 з\r\nGR D\r\n";


void UART1_Send(char *ch);
void Init_all(void);
void TfmInit(void);
void cmd_delay(void);

int main(void)
{
volatile uint32_t i;

__enable_irq();
//инициализация процессора
Init_all();
//Инициализация модуля
TfmInit();

while (1)
{
for(i=0;i<0x28676C;i++);//тупим
UART1_Send(KUKU);
cmd_delay();

}
}


void TfmInit(void)
{
volatile uint32_t i;
for(i=0;i<0x1ffffff;i++);//пауза-ждем инициализации внешнего устройства
UART1_Send ("GR D\r\n");//
cmd_delay();
UART1_Send ("GR CS\r\n");//
cmd_delay();
UART1_Send ("GR D\r\n");//
cmd_delay();
UART1_Send("D SET REG 19 0\r\n");//
cmd_delay();
UART1_Send("D SET REG 17 0\r\n");//
cmd_delay();
UART1_Send("D SET REG 20 0\r\n");//
cmd_delay();
UART1_Send("D SET REG 18 0\r\n");//
cmd_delay();
UART1_Send("D SET REG 4 215\r\n");//
cmd_delay();

}

void UART1_Send(char *ch)
{
unsigned int len,i;
char *p = ch;


while (*p)
{
while( (USART1->SR & USART_SR_TXE) == 0);

USART1->DR = *p; p++;

}
while((USART1->SR & USART_SR_TC) == 0);
USART1->SR &= ~USART_SR_TC;
}

void cmd_delay(void)
{
volatile int delay;
delay=0x7ff;
while(delay!=0)delay--;

}

void Init_all(void)
{

GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;

///////////////////////////////////////////////////////////////////////////////////////////
// INIT PERIPHERAL CLOCK
///////////////////////////////////////////////////////////////////////////////////////////
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);



///////////////////////////////////////////////////////////////////////////////////////////
// PORTA 9:10 RxTx USART1
///////////////////////////////////////////////////////////////////////////////////////////
/* Configure USART1 Rx as input floating */
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
// GPIO_Init(GPIOA, &GPIO_InitStructure);


/* Configure USART1 Tx as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
///////////////////////////////////////////////////////////////////////////////////////////
// - BaudRate = 57600 baud
// - Word Length = 8 Bits
// - One Stop Bit
// - no parity
// - Hardware flow control disabled (RTS and CTS signals)
// - Receive and transmit enabled
//
///////////////////////////////////////////////////////////////////////////////////////////
USART_InitStructure.USART_BaudRate = 57600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Tx;

/* Configure USART1 */
USART_Init(USART1, &USART_InitStructure);

USART_Cmd(USART1, ENABLE);

}
KRS
Попробуйте для начала скорость UART уменьшить, например до 9600 и поставить 2 стоп бита
Andrey_C
Сейчас попробую, а можете объяснить взаимосвязь?

Попробовал-результат такой же.

Уточню ещё некоторые детали:
Изначально делал в кейле, тоже самое перенес в иар-результата нет. Заливал код в STM32f103VET6 - тоже самое(настройки проекта соответственно менял).
Пробовал отправку через ДМА-результат тот же.

Выход смотрю через ft232rl программой Terminal Br@y++ v1.9- там есть лог в файл.
SasaVitebsk
Терминал может некоторые символы проглатывать. Считать их как "не отображаемые". Кроме того, надо отключить управление потоком. Какие у вас там настройки никто не знает.
Короче убедитесь, что терминал гарантированно всё записывает.
Лучше конечно какая нибудь более объективная прога.
Andrey_C
Спасибо за ответ! Управление потоком естественно выключено. Кроме программы Terminal снимал лог с порта программой Putty результат такой же.
alag57
Цитата(Andrey_C @ Mar 16 2016, 16:23) *
Код
UART1_Send ("GR D\r\n");//


Код
void UART1_Send(char *ch)
{
unsigned int len,i;
char *p = ch;
  while (*p)
  {
    while( (USART1->SR & USART_SR_TXE) == 0);
    USART1->DR =  *p; p++;
  }
while((USART1->SR & USART_SR_TC) == 0);
USART1->SR &=  ~USART_SR_TC;
}

Когда здесь *p будет равно 0? Когда в памяти вдруг 0 встретится?
Надо наверное вставить \0? Нет?
scifi
Цитата(alag57 @ Mar 16 2016, 17:24) *
Когда здесь *p будет равно 0? Когда в памяти вдруг 0 встретится?
Надо наверное вставить \0? Нет?

О господи cranky.gif
Kabdim
Цитата(alag57 @ Mar 16 2016, 17:24) *
Когда здесь *p будет равно 0? Когда в памяти вдруг 0 встретится?
Надо наверное вставить \0? Нет?

Неа, когда пишут строковый литерал в кавчках \0 подставляет компилятор в конц автоматом.
http://en.cppreference.com/w/c/language/string_literal
alag57
Цитата(Kabdim @ Mar 16 2016, 20:18) *
0 подставляет компилятор в конц автоматом.

Во блин! scifi верно диагноз определил sm.gif
Aaron
Цитата
При передаче происходит потеря данных, например: из этих 1500 байт может сначала послать сколько-то байт данных, потом сколько нибудь пропустит и дослать оставшиеся ;
либо может передать часть данных,и начать передавать набор с начала.

Может дело в МК? Сброса не происходит внезапного? Проверьте пропай ножек МК. Тактирование от чего ведётся - внешний кварц? Мб там что-то не то. Попробуйте затактировать от внутреннего генератора, как изменится поведение?
Если это точно весь код, и при этом у вас может начать сначала передавать данные внезапно (вы ведь не врёте, правда? cool.gif ), то тут явно дело в железе.
KRS
Цитата(Andrey_C @ Mar 16 2016, 15:09) *
Сейчас попробую, а можете объяснить взаимосвязь?

Потеря синхронизации. в UART допустимо до 2% разбежки...

UART еще можно проверить замкнув RX на TX и получать эхо в контроллере...

jcxz
Цитата(Aaron @ Mar 17 2016, 13:02) *
Если это точно весь код, и при этом у вас может начать сначала передавать данные внезапно (вы ведь не врёте, правда? cool.gif ), то тут явно дело в железе.

Для исключения проблем в железе предназначены отладочные платы. Разработка ПО обычно начинается с работы на отладочной плате, это позволяет подстраховаться от проблем по-крайней мере со стороны железа на начальном этапе.
KRS
А у Вы вообще с UART ранее работали на таком железе? Может у вас это CMSIS кривой....
Я бы у меня встретилась подобна непонятная ошибка я бы пошел последовательно
1. Проверить железку на FT232RL - замкнув RX c TX b посмотрев эхо
2. Проверить аналогично эхо уже на своей плате, например посылать раз в какое то время байт от 0 до 255 и проверять эхо
3. Соединить с компом и проверить идут ли простые посылки
...
если в пункте 2 уже не работает - выкинуть нафиг CMSIS
esaulenka
Попробуйте другую FT232 (или какой-то другой адаптер, вариантов много).
Можно попробовать передавать в себя же, замкнув rx-tx. Для начала можно просто принятые байты считать.

Если есть осциллограф, стоит посмотреть на линию usart'а, измерить длину бита; проследить что она не меняется, когда приём вдруг ломается.
Правда, это маловероятно - только если кварц сбивается, и процессор продолжает работать от встроенного RC-генератора. У меня так получается, только если ткнуть в ноги кварца пинцетом.

PS USART1->SR &= ~USART_SR_TC; делать не нужно. Во-первых, он и так скинется при повторном заходе в эту функцию. А во-вторых, правильно делать USART1->SR = ~USART_SR_TC;
Andrey_C
Цитата(jcxz @ Mar 17 2016, 11:06) *
Для исключения проблем в железе предназначены отладочные платы. Разработка ПО обычно начинается с работы на отладочной плате, это позволяет подстраховаться от проблем по-крайней мере со стороны железа на начальном этапе.

Немного наврал,точнее недоговорил,извиняюсь-уже нервный стресс испытывать начинаю.... Отправляет не всегда криво,может выслать массив целиком несколько раз (число правильных посылок всегда разное) а потом возникает собственно проблема описанная выше.

Кроме своей платы использовал и отладочную плату с другим процессором (тоже стм32,только памяти побольше).

МК,не сбрасывается, проверял и отладчиком, и при резете выдавал в другой порт строчку- все железно. Непропай, плохой кварц наверное можно исключить с большой долей вероятности, т.к. тестировал код на другой плате с другим процем и кварцем.

Цитата
А у Вы вообще с UART ранее работали на таком железе? Может у вас это CMSIS кривой....
Я бы у меня встретилась подобна непонятная ошибка я бы пошел последовательно
1. Проверить железку на FT232RL - замкнув RX c TX b посмотрев эхо
2. Проверить аналогично эхо уже на своей плате, например посылать раз в какое то время байт от 0 до 255 и проверять эхо
3. Соединить с компом и проверить идут ли простые посылки
...
если в пункте 2 уже не работает - выкинуть нафиг CMSIS

На стмках c UARTом уже работал, все вроде бы успешно было. CMSIS сначала был стмовский-когда в кейле писал. Сейчас- который в стандартной поставке ИАРА (6.20 версия)
1- железку проверял,посылал целиком файл с набором данных из листинга программы- все стабильно приходит несколько раз подряд.
2- плату честно не догадался проверить таким образом,спасибо за совет- попробую.
3- простые посылки идут нормально.

FT232 уже заменил - пофигу.
по поводу сброса флага-спасибо, недосмотрел даташит сначала-сбрасывается оригинально- поправил smile3046.gif
Если честно,то ситуация П%%%%%Ц непонятная для меня, вроде бы почти все проверено, и в другом железе в т.ч. , программно-все около дела; через ДМА,прерывания,тупо циклом-результат стабильно х...й.

может сплошным потоком 1500 байт СТМовский УАРТ не держит за раз?!

Вобщем,попробую эхо на контроллере-отпишусь,как и что.....спасибо большое за участие!

Ruslan1
Цитата(Andrey_C @ Mar 17 2016, 17:10) *
уже нервный стресс испытывать начинаю....

Вы этта... Отдохните, сделайте перерыв, поспите, погуляйте. А потом, с новыми силами- за разборки.
Перво-наперво: нужна система. хаотические прыжки в разные стороны (другой компилятор, другое железо...) не приведут к сужению области возможных значений, если непонятно что Вы хотите проверить и доказать в ходе этого конкретного прыжка.
И еще эти прыжки ну никак не помогут в процессе решения следующей проблемы, так как никакого опыта не дали, даже если и привели к случайному нахождению проблемы.

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

Например, у Вас система связи, которая состоит из :
1) передатчик
2) линия связи
3) приемник.

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


Проверка передатчика состоит в том, чтобы принять байты чем-то гарантированно работающим.
Проверка приемника делается приемом заведомо известной последовательности байтов.

У Вас же проверяется все вместе и работоспособность чего-то не доказана. Может, у Вас в разъеме компьютера земля плохо контачит, а Вы компилятор меняете.
SasaVitebsk
Добавлю ещё одно, к сказанному Ruslan1.
Вероятность того, что виноват (по описанному хомуту) компилятор, CMSIS ... исчезающе мала.
Вероятность хомута железа, я бы оценил как единицы процентов.
Наиболее вероятный хомут, как обычно, в программе. Ваш хомут.
Любой человек, а не только вы, склонен приписывать успехи себе, а неудачи перекладывать на другого. На разработчика железа, компилятора, библиотек ... biggrin.gif
Попробуйте более критически подойти к себе ... )) Скажу по себе - это помогает.
Хомут может быть запрятан совершенно в другой части программы. На ваш взгляд совершенно не связанной.
Поэтому, кроме сказанного Ruslan1, добавлю. Минимизируйте прогу. Оставьте только часть, необходимую для проверки.
На stm не грешите. Я только что тестил 6 изделий. Суммарно отработали с середины декабря. Обмен примерно 1 раз в секунду. Прибор на базе 407. Один прибор стоял с двумя расширителями на базе 103.
Расширители общаются с основным прибором по RS485. Цикл опроса < 100 мс.
Приём у меня по прерыванию, передача по DMA.
Для одного из заводов делал стенд. Там стоит 4 103. Работает круглосуточно. Тоже претензий нет.
ViKo
Прежде, чем искать программные косяки, убедитесь, что аппаратно все работает, как должно. Осциллографом сигналы посмотрите. И питание тоже.
Сергей Борщ
Раз все кинулись оказывать моральную поддержку, посоветую найти 15 минут и прочитать "историю одного байта".
Ruslan1
Цитата(Сергей Борщ @ Mar 18 2016, 09:53) *
Раз все кинулись оказывать моральную поддержку, посоветую найти 15 минут и прочитать "историю одного байта".

Эх молодость...
Насколько я помню, в РуЕмбедеде в Феде это произведение сильно раньше появилось и горячо обсуждалось Шепелевым-Торресом-Орловым sm.gif
Ода творчеству sm.gif
Obam
Цитата(Ruslan1 @ Mar 18 2016, 15:58) *
Эх молодость...
Насколько я помню, в РуЕмбедеде в Феде это произведение сильно раньше появилось и горячо обсуждалось Шепелевым-Торресом-Орловым sm.gif
Ода творчеству sm.gif


А как Жору "мочили"; пестня (;
Ruslan1
Цитата(ViKo @ Mar 18 2016, 09:52) *
Прежде, чем искать программные косяки, убедитесь, что аппаратно все работает, как должно. Осциллографом сигналы посмотрите. И питание тоже.

Кстати, очень пользительная штука логический анализатор, тот который китайцы продают за 10 баксов.
Неделю назад с его помощью разрулил ситуацию "кто виноват" в связке моя железяка- компьютер. ПЦ-Программер кричал что у него все в порядке, пока я ему не показал форму напряжения- его порт чудесным образом через несколько минут работы переходил с 115200 на 9600 (передача от компа в меня), хотя у него в коде этого в принципе нет. Он мне- исходники ("ну нету тут 9600"), я ему- эпюры с логического анализатора ("вот тут-115200, а вот это уже 9600 поперло"). Стал тих, задумчив, ковырялся в драйверах линуха, через пару часов заработало.

Цитата(Obam @ Mar 18 2016, 15:07) *
А как Жору "мочили"; пестня (;

Он, кстати, мне самым адекватным из той троицы казался. Но извиняюсь за офтопик, больше не буду sm.gif
rx3apf
Цитата(Ruslan1 @ Mar 18 2016, 15:14) *
Кстати, очень пользительная штука логический анализатор, тот который китайцы продают за 10 баксов.

О, только хотел сказать то же самое ! (уже, кстати, от $5 можно найти). Скорости, потери, время перехода RX-RX в полудуплексных системах - самое оно. Снимает кучу вопросов сразу. И на практике гораздо удобнее чем скоп даже с опцией декодирования UART.
Сергей Борщ
Цитата(Ruslan1 @ Mar 18 2016, 13:58) *
Насколько я помню, в РуЕмбедеде в Феде это произведение сильно раньше появилось и горячо обсуждалось Шепелевым-Торресом-Орловым sm.gif
Я набрал в гугле и взял первую ссылку. Специально искать первоисточник было лень. Но "у меня все ходы записаны":
Код
Subject:
             История одного байта
        Date:
             Tue, 08 May 2001 08:36:07 +0400
        From:
             Alexey Vladimirov <Alexey.Vladimirov@f99.n5100.z2.fidonet.org>
Organization:
             * AV_Point - Riga, Latvia *
Newsgroups:
             fido7.ru.embedded


(c) Dmitry Galuscenko

                История одного байта
                ====================


Ссылку на самый достойный из дешевых лог. анализаторов на Али кто-нибудь подскажет?
ViKo
24 Мвыб/с в одноканальном режиме - не впечатляет, USB уже не посмотришь. Хотя, по соотношению цена/качество хорош. Как игрушке, не нарадуешься. Сам не имею, надо купить, думаю.
Ruslan1
Цитата(ViKo @ Mar 18 2016, 17:03) *
24 Мвыб/с в одноканальном режиме - не впечатляет, USB уже не посмотришь. Хотя, по соотношению цена/качество хорош. Как игрушке, не нарадуешься. Сам не имею, надо купить, думаю.

Это не игрушка, а действительно очень качественный продукт с очень качественным софтом (понятно, что китайцы тут не причем- они дешевого клона сделали).
само собой, им езернет и юсб наблюдать не получится, и еще много чего не получится.
Но вот все низкочастотное, начиная с USART и I2C и заканчивая низкоскоростными SPI (несколько мегагерц) - отлично. Причем главное- в софте, он действительно отличный, с автоматическим декодированием протоколов (SPI, UART, I2C- показывает и байты тоже, а не только уровни).

Незаменимая штука если ошибка нерегулярная, а спать хочется. Я на нем как-то 8-канальный логгер "собрал" за 10 минут, оставил на выходные, а в понедельник уже разбирался, кто когда что передал, с полной синхронизацией между каналами, он очень длинные файлы умеет делать (Сейчас глянул- два мегасемпла по 8 каналам может больше пяти дней собирать). Но я больше чем на три дня не оставлял, и семплировал поменьше.

Цитата(Сергей Борщ @ Mar 18 2016, 16:43) *
Ссылку на самый достойный из дешевых лог. анализаторов на Али кто-нибудь подскажет?

Они все- Saleae logic. Если предлагают что-то с другим софтом- не советую, должно быть 24MHz совместимое с saleae (китайцы часто это название фирмы-разработчика не упоминают в описании лота, только по картинкам софта ниже в описании можно понять что это оно).
недавно покупал 16-каналку от того же разработчика, 28 зеленых, еще в продаже
а 8-каналки на али давно покупал, ссылки уже не работают.
они все выглядят как этот или этот

обязательно купите нормальные захваты, это еще 2 бакса за десяток щупов с проводами (8 каналов + 2 земляных)

Кстати, оригинал уже "прокачали" до 100 мегасемплов и даже до 500, надо же с китайскими копипастерами конкурировать sm.gif
ViKo, это специально для Вас, обещают даже декодирование нужного USB. Если цена оригинала не смущает (600 угадайте чего) sm.gif
Цитата
Sixteen digital inputs, sixteen analog inputs (shared with digital channels)
Maximum Sample Rates Digital: 500 MSPS @ 4 channels, 100 MSPS @ 16 channels (USB 3.0 required)
Analog: 50 MSPS @ 3 channels, 12.5 MSPS @ 13 channels, 6.25 MSPS @ 16 channel
Bandwidth Digital: 100 MHz square wave when sampling at 500 MSPS
Analog: 5 MHz when sampling at 50 MSPS
Trigger Edge or pulse width trigger
Software Cross-platform Windows, Mac and Linux support
Supported Protocols Serial, SPI, I2C, Atmel SWI, Biss-C, CAN, DMX-512, HD44780, HDLC, I2S, JTAG, LIN, MDIO, MIDI, Manchester, Modbus, 1-Wire, PS/2 Keyboard & Mouse, SMBus, SWD, Synchronous Parallel, USB, UNI/O

Но там хитрости с буферизацией, мне кажется что они эти сотни мегасемпл буферизируют, соответственно терабайт записать не смогут.
ViKo
Да, на официальном сайте я уже изучил вдоль и поперек свойства, цены. Хороший - дорого, во всяком случае, сейчас. Для начала можно взять дешевый (китайский), с программой познакомиться.
arhiv6
Цитата
Ссылку на самый достойный из дешевых лог. анализаторов на Али кто-нибудь подскажет?

Я брал у этого продавца. Всего восемь каналов, но за такую-то цену не жалко sm.gif
esaulenka
(раз уж взялись оффтопить...)

Руслан, а как этот logic16 на сотне мегасэмплов работает?
Беглый гуглинг сообщает нам "у меня всё работает, ногодрыг с ардуины захватывается, больше мне ничего не надо" и "ничего не работает, сэмплы теряются напрочь"
HardEgor
Цитата(Ruslan1 @ Mar 19 2016, 04:06) *
обязательно купите нормальные захваты, это еще 2 бакса за десяток щупов с проводами (8 каналов + 2 земляных)

Это не очень хорошие захваты, дешевые спору нет, но цеплять ими удобно только выводы крупных деталей типа ТО-220. А вот в фирменном комплекте идут замечательные - можно за ножку SO-8 зацепить безбоязненно. Аналогичные купил на aliexpress, но по качеству несколько хуже фирменных.
PeterBr
Демонстрационный код работы USART STM32. Пример кода для работы USART
картошка
Если используешь FTDI и WIN7. Бросай FTDI в топку. Бери CP2102, дешевле и работает красиво. С винды FTDI в устройство передает, а в ответ - ерунда мусорная. Почитал, оказывается FTDI легенду кинула типа их микросхемы подделывают "ИНЫЕ" китайцы, шо плохо сказывается в работе с WIN7 на драйверном уровне.
Gorby
Цитата(Ruslan1 @ Mar 18 2016, 13:58) *
Эх молодость...
Насколько я помню, в РуЕмбедеде в Феде это произведение сильно раньше появилось и горячо обсуждалось Шепелевым-Торресом-Орловым sm.gif
Ода творчеству sm.gif

bb-offtopic.gif

Блин, Вы их тоже помните? - Тогда Вам, наверное, лет СТО!
Ruslan1
Цитата(Gorby @ Apr 8 2016, 14:24) *
bb-offtopic.gif

Блин, Вы их тоже помните? - Тогда Вам, наверное, лет СТО!

угу.
Цитата
Боже мой как мы ужасно постарели
В этом возрасте по-моему не живут
Больно думать как мы много
Как мы много не успели
Потому что мы родилися в лесу

( © Секрет - Песня гномов)


Цитата(картошка @ Apr 8 2016, 14:04) *
Если используешь FTDI и WIN7. Бросай FTDI в топку. Бери CP2102, дешевле и работает красиво. С винды FTDI в устройство передает, а в ответ - ерунда мусорная. Почитал, оказывается FTDI легенду кинула типа их микросхемы подделывают "ИНЫЕ" китайцы, шо плохо сказывается в работе с WIN7 на драйверном уровне.

Я много микросхем FT232R пользовал, все всегда нормально и с седьмой виндой (ничего специального не ставил, штатные драйвера).
Но они у меня в основном как вспомогательные, на консоль, например. Так чтобы круглосуточно мегабайты принимать и контролировать валидность этих данных - не использовал
SasaVitebsk
Цитата(Ruslan1 @ Apr 8 2016, 23:00) *
Я много микросхем FT232R пользовал, все всегда нормально и с седьмой виндой (ничего специального не ставил, штатные драйвера).
Но они у меня в основном как вспомогательные, на консоль, например. Так чтобы круглосуточно мегабайты принимать и контролировать валидность этих данных - не использовал

Да и с 10 никаких проблем. У меня вообще с FTDI никаких проблем не было. На заре создания, когда были ещё ft232am некоторые вопросы с запуском возникали.
AHTOXA
Это вам повезло просто. Вот, ознакомьтесь.
Ruslan1
Цитата(AHTOXA @ Apr 11 2016, 11:55) *
Это вам повезло просто. Вот, ознакомьтесь.

Повторюсь. FTDI работает нормально. Если Вы покупаете подделку- то она может и не работать, но почему в этом именно фирма FTDI виновата?

Я понимаю, что часто мы не знаем что покупаем, тут может быть еще доля везения.
Но вот буквально недавно китайцы собрали 50 плат с FT232- нет проблем (кроме, блин, еще пятидесяти новых сериальных портов в компьютере во время проверки. Которые потом надо по одному удалять, а не оптом все).

Еще недавно был случай- китайцы прислали стоимость прототипа, где цена некоторых частей меня удивила. Когда я спросил почему на ебее 0.10 доллара а у них это 0.80 стоит- написали, что они по 0.8 берут у проверенного продавца, а то что я вижу по 0.1 - это новый продавец, и соответственно риск. Вероятно, с микросхемами FTDI та же история- можно взять кота в мешке, а можно и что-то проверенное.
AHTOXA
Цитата(Ruslan1 @ Apr 11 2016, 18:27) *
Если Вы покупаете подделку- то она может и не работать, но почему в этом именно фирма FTDI виновата?

Потому, что они решили наказать _пользователей_ за то, что кто-то подделывает их чипы. Это же они сделали драйвер, обнуляющий VID/PID. Я считаю, что нормальная фирма так делать не должна.
Они нанесли репутационный урон многим производителям оборудования, выбравшим для своих устройств FTDI. Производители поставили поддельные микросхемы (в подавляющем большинстве случаев - не зная об этом) в свои устройства, проверили работоспособность устройств (всё в порядке), поставили свои устройства конечному потребителю, и после этого новый драйвер FTDI убил эти устройства. И бедные производители вынуждены были в авральном порядке решать проблемы.

Кстати, купить подделку можно и задорого, это просто лотерея.
Ruslan1
Цитата(AHTOXA @ Apr 11 2016, 18:00) *
Потому, что они решили наказать _пользователей_ за то, что кто-то подделывает их чипы. Это же они сделали драйвер, обнуляющий VID/PID. Я считаю, что нормальная фирма так делать не должна.
Они нанесли репутационный урон многим производителям оборудования, выбравшим для своих устройств FTDI. Производители поставили поддельные микросхемы (в подавляющем большинстве случаев - не зная об этом) в свои устройства, проверили работоспособность устройств (всё в порядке), поставили свои устройства конечному потребителю, и после этого новый драйвер FTDI убил эти устройства. И бедные производители вынуждены были в авральном порядке решать проблемы.

А по-моему, имеют полное право защищаться таким способом. Если скупщик краденного имеет проблемы- то это у точно не проблемы того, у кого украли.
Если бы я попал в ситуацию, описанную Вами- я бы излил весь негатив не на фирму FTDI, а на конкретных продавцов партии, оказавшейся подделкой.
AHTOXA
Цитата(Ruslan1 @ Apr 12 2016, 00:43) *
Если бы я попал в ситуацию, описанную Вами- я бы излил весь негатив не на фирму FTDI, а на конкретных продавцов партии, оказавшейся подделкой.

У вас есть такой шанс. Кто может поручиться, что купленные вами чипы FTDI не являются новыми, более совершенными подделками. В этом случае есть вероятность, что через некоторое время драйверописатели FTDI научатся это распознавать, и при обновлении драйверов ваши устройства превратятся в тыкву. Думаю, когда на вас со всех сторон посыплются претензии от заказчиков, вы по-другому оцените действия FTDI.
Мы, по крайней мере, решили так не рисковать, и переключились на других производителей.
KnightIgor
Цитата(Ruslan1 @ Apr 11 2016, 14:27) *
Но вот буквально недавно китайцы собрали 50 плат с FT232- нет проблем (кроме, блин, еще пятидесяти новых сериальных портов в компьютере во время проверки. Которые потом надо по одному удалять, а не оптом все).

Несколько ОТ - как удалить все эти лишние COM-порты чохом: в registry надо записать
Код
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\COM Name Arbiter]
"ComDB"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
  00,00,00,00,00,00,00,00,00,00


Ruslan1
Цитата(AHTOXA @ Apr 12 2016, 06:51) *
У вас есть такой шанс. Кто может поручиться, что купленные вами чипы FTDI не являются новыми, более совершенными подделками. В этом случае есть вероятность, что через некоторое время драйверописатели FTDI научатся это распознавать, и при обновлении драйверов ваши устройства превратятся в тыкву. Думаю, когда на вас со всех сторон посыплются претензии от заказчиков, вы по-другому оцените действия FTDI.
Мы, по крайней мере, решили так не рисковать, и переключились на других производителей.

Да, я понимаю. никто не застрахован. Все может быть, и вполне возможно что и я часть негатива выплесну на FTDI в этом случае. Но это будут эмоции. Главный виновник тут продавец, но с него стрясти реальный ущерб не получится, это я тоже понимаю. Остается только проверять-перепроверять, и экономить только "в пределах разумного".

Цитата(KnightIgor @ Apr 12 2016, 13:33) *
Несколько ОТ - как удалить все эти лишние COM-порты чохом: в registry надо записать
Код
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\COM Name Arbiter]
"ComDB"=hex:00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
  00,00,00,00,00,00,00,00,00,00

Ура! Проверил, работает!

Буду знать. Данке шен! sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.