|
STM32F100C6T6 и 1-wire, не отладить в IAR EWARM v6.30.4 |
|
|
|
Jan 21 2012, 19:58
|

Профессионал
    
Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807

|
К STM32F100C6T6 подключен DS18B20. Со времен AVR есть отлаженные исходники для 1-wire bus. Думалось, что все будет просто при наладке портированных исходников, но затык случился конкретный: отладить и проверить работу подключенного DS18B20 практически не удалось. Разбор полетов указал на... странную работу портов и решения или ошибки что-то никак не увидел. Пришлось упростить до одного файла main.c, в котором приведены два упражнения (примера). Как вывести из IAR (Win7 64) с русскими комментами вместо крякозябр - не знаю, потому см. аттач.
main.pdf ( 26.04 килобайт )
Кол-во скачиваний: 603Разочарований в STM32F100 два: 1. При частоте HCLK 24MHz максимальная частота ногодрыгания ~1.78Mhz. При макс оптимизации! Это катастрофа! Возможно, что-то сделано не так в системе тактирования? Неужели STM32 такие медленные? 2. Отладить простую процедуру сброса 1-wire не смог! Осциллом смотрю - все очень безоблачно: сначала вижу отриц импульс на 500us, потом проц освобождает шину, датчик ждет 35us и удерживает ее в нуле еще на 60-120us, т. е. с момента окончания отриц импульса до момента получения значения состояния шины я заложил 80us - вполне достаточно. Каково же было мое удивление, когда выяснилось, что проц читает это состояние как 1, хотя судя по осциллу явно должен быть 0. Проверил отладкой в EWARM через J-Link Ultra, что если вручную перед чтением установить на шине 0, то это состояние софтом читается правильно. Все дело в скорости чтения... Проц почему-то не может получить значение пина за несколько us. Стало ясно, почему и прочие процедуры чтения ключа и т. п. не работали... Попытки отключить USE_FULL_ASSERT, манипуляции оптимизацией ни к чему не привели, библиотечные функции проверены. Система тактирования проверена частично через вывод на пин MCO - Fhclk=24MHz. Нужна помощь...
|
|
|
|
|
 |
Ответов
|
Jan 23 2012, 08:05
|

Профессионал
    
Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807

|
Цитата Можно, дёргая какую-нибудь ногу до и после, проверить осциллографом на сколько она задерживает Именно так я ее и проверял - работает нормально и в пределах допусков! Но после такой задержки прочитать заранее известное состояние шины 1-wire почему-то не получается (см. main.c из первого поста) и это тревожит... Т. е. как бы выходит, что SysTick таймер, являющийся периферией ядра - это не то же самое, что стандартные периферийние таймеры на APB2 (при Fhclk = Fapb2 естественно). И это при том, что если вручную установить (замкнуть шину) 1-wire на землю, то в рантайме после этой задержки посредством SysTick состояние 1-wire прекрасно читается как 0. Чудеса какие-то... Цитата Нет, пин нужно настраивать и на ввод и на вывод (вроде во всех основоположниках от макса и атмель так делается) все же рекомендую обратиться к ref manual на STM32F100 rev4 стр. 103: Output configuration When the I/O Port is programmed as Output: ● The Output Buffer is enabled: – Open Drain Mode: A ”0” in the Output register activates the N-MOS while a ”1” in the Output register leaves the port in Hi-Z. (the P-MOS is never activated) – Push-Pull Mode: A ”0” in the Output register activates the N-MOS while a ”1” in the Output register activates the P-MOS. ● The Schmitt Trigger Input is activated. ● The weak pull-up and pull-down resistors are disabled. ● The data present on the I/O pin is sampled into the Input Data Register every APB2 clock cycle ● A read access to the Input Data Register gets the I/O state in open drain mode ● A read access to the Output Data register gets the last written value in Push-Pull modeПоэтому лучше все же конфиг на лету не делать, но по-вашему вроде все равно должно работать... Цитата У меня 0 при резете ловился стабильно, только если задержку между опусканием шины и освобождением делать не более 50 мкс. И было это уже не резет, а 1. А вот стоит задержку увеличить до штатных не менее 480 мкс, все, тишина. секунду... что-то тут не так... задержка между отпусканием шины и ЧТЕНИЕМ ее уже известна на момент отпускания и равна примерно (35+50)us. Причем 35 формирует датчик и 50 добавляем мы... или я что-то не понял?..... После "вторых" 480us - ясный хрен будет прочитана 1... Посмотрел, у вас задержки сделаны на TIM2. Неужели и так не прочитаю 0??? Сення после работы попробую обязательно... И еще... Стабильность HSI для поддержки 1-wire вполне достаточна (~2.5% в широком темп диапазоне) и не может стать причиной сбоев на шине при переходе от mcu к mcu... Все это ИМХО, конечно....
|
|
|
|
Сообщений в этой теме
ivainc1789 STM32F100C6T6 и 1-wire Jan 21 2012, 19:58 Aner 1-wire bus довольно жесткий к времянке, не каждый ... Jan 21 2012, 23:53 ivainc1789 Цитата(Aner @ Jan 22 2012, 03:53) 1-wire ... Jan 22 2012, 00:30 Aner Без опыта преждних разработок и внимательного пони... Jan 22 2012, 14:42 sparcmaster Цитата(Aner @ Jan 22 2012, 18:42) Все из ... Jan 23 2012, 04:35 zoddy не знаю, что у Вас там не получается... но у меня ... Jan 22 2012, 15:56 skripach ЦитатаВсе из себя 32 битные. Но вот как только дел... Jan 22 2012, 16:44 ivainc1789 Цитата(Aner @ Jan 22 2012, 18:42) Без опы... Jan 22 2012, 17:28 maksimp Цитата(ivainc1789 @ Jan 22 2012, 21:28) п... Jan 23 2012, 05:54 lexanet Я тоже так и не смог подключить DS18B20 к дисковер... Jan 23 2012, 03:17 ivainc1789 ЦитатаЭто вы программно делаете 1-wire?Ну да. А чт... Jan 23 2012, 05:33 lexanet Цитата(ivainc1789 @ Jan 23 2012, 08:33) И... Jan 23 2012, 06:12 maksimp Цитата(ivainc1789 @ Jan 23 2012, 12:05) И... Jan 23 2012, 08:45 lexanet Для проверки живости датчика и работоспособности п... Jan 23 2012, 08:19 ivainc1789 ЦитатаДостаточно на глаз настроить...а если частот... Jan 23 2012, 08:32 lexanet Цитата(ivainc1789 @ Jan 23 2012, 11:32) а... Jan 23 2012, 10:06  maksimp Цитата(lexanet @ Jan 23 2012, 14:06) то ж... Jan 23 2012, 13:04   lexanet Цитата(maksimp @ Jan 23 2012, 16:04) Такт... Jan 23 2012, 13:33    maksimp Цитата(lexanet @ Jan 23 2012, 17:33) Такт... Jan 23 2012, 18:33     lexanet Цитата(maksimp @ Jan 23 2012, 21:33) Убер... Jan 24 2012, 02:59      maksimp Цитата(lexanet @ Jan 24 2012, 06:59) Подт... Jan 24 2012, 05:32 ivainc1789 Провел серию экспериментов как вы советовали... В ... Jan 23 2012, 19:26 ivainc1789 Уже здесь возникают вопросы... Такой цикл выдает н... Jan 24 2012, 08:19 maksimp Цитата(ivainc1789 @ Jan 24 2012, 12:19) Т... Jan 24 2012, 09:00 ivainc1789 ЦитатаПрерывания разрешены или запрещены? Если раз... Jan 24 2012, 11:14 maksimp Цитата(ivainc1789 @ Jan 24 2012, 15:14) т... Jan 24 2012, 12:34 shista Почитал дискусиию и решил проверить действительно ... Jan 24 2012, 17:39 lexanet Цитата(shista @ Jan 24 2012, 20:39) Кому ... Jan 25 2012, 04:55 ivainc1789 КодПочитал дискусиию и решил проверить действитель... Jan 25 2012, 07:05 maksimp Цитата(ivainc1789 @ Jan 25 2012, 11:05) П... Jan 26 2012, 05:28  ivainc1789 Цитата(maksimp @ Jan 26 2012, 09:28) Заме... Jan 26 2012, 07:17 shista ЦитатаМое неудачное портирование исходников 1-wire... Jan 25 2012, 13:52 ivainc1789 ЦитатаА можно весь проект?
Конечно. Все подготовил... Jan 25 2012, 17:27 shista Посмотреть смогу не раньше пятницы, в четверг в ко... Jan 25 2012, 19:01 ivainc1789 Цитата(shista @ Jan 25 2012, 23:01) Посмо... Jan 25 2012, 23:30 ivainc1789 Ну и наконец, из-за особенностей регистра VAL SysT... Jan 26 2012, 13:26 Сергей Борщ QUOTE (ivainc1789 @ Jan 26 2012, 15:26) Н... Jan 31 2012, 11:01  maksimp Цитата(Сергей Борщ @ Jan 31 2012, 14:01) ... Jan 31 2012, 11:39   Сергей Борщ QUOTE (maksimp @ Jan 31 2012, 13:39) Непр... Jan 31 2012, 12:05 EugenyAM Когда-то делал на AVR асинхронный обмен по 1-wire ... Jan 31 2012, 09:06 iPKM При копировании функции _delay_loop из архива Bli... Feb 2 2012, 10:15 shista Замените
Кодasm("BNE loop \n"... Feb 2 2012, 14:47 toweroff Я делал 1-wire на lpc2103 через SSP с длиной, помн... Feb 2 2012, 17:01 smk У STM есть особенность настройки выводов портов, о... Feb 3 2012, 06:25
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|