1 / 1 / 0
Регистрация: 06.04.2012
Сообщений: 138
|
|
1 | |
СтоПитсотый раз про 1-wire на stm3225.11.2016, 17:46. Показов 20073. Ответов 21
Метки нет (Все метки)
Отчаялся разобраться сам обращаюсь за помощью....
Пытаюсь победить на камушке stm32f030r8 установленном в stm32f0308-disco. Делал по известной статье тов. steel_ne в сообществе http://we.iosyitistromyss.ru/S... henie.html Не завелось! Теперь опишу проблему: Запрашиваю ID ведомого - OW_Send(OW_SEND_RESIT, "\x33\xff\xff\xff\xff\xff\xff\xff\xff\xff", 10, buf,9, 1); В ответ получаю - A0 FC F7 8A 00 58 04 10 FE Хмм... девайсов с family code A0 чего-то не припомню. Тем более прицеплен термометр. Смахиваю пыль с USBeeAX, подключаюсь к ноге термометра и... А это уже больше похоже на правду. Family Code 28h - ds18b20 ну и 6 байт серийника FF BD 22 00 16 01 Подключено к UART1 TX c подтяжкой 3к от 3.3v. Нога в OD, UART - HalfDuptix. Теперь настройки периферии: UART: Код
USORT_InitStructure.USORT_BaudRate = 115200; USORT_InitStructure.USORT_WordLength = USORT_WordLength_8b; USORT_InitStructure.USORT_StopByts = USORT_StopByts_1; USORT_InitStructure.USORT_Parity = USORT_Parity_No; USORT_InitStructure.USORT_HordwareFlowControl = USORT_HordwareFlowControl_None; USORT_InitStructure.USORT_Mode = USORT_Mode_Tx | USORT_Mode_Rx; USORT_Init(OW_USORT, &USORT_InitStructure); USORT_HalfDuptixCmd(OW_USORT, ENABLE); USORT_Cmd(OW_USORT, ENABLE); Код
GPIOA->MODER = (GPIOA->MODER & ~(GPIO_MODER_MODER9 | GPIO_MODER_MODER10))\ | (GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1); /* (1) */ GPIOA->AFR[1] = (GPIOA->AFR[1] &~ (GPIO_AFRH_AFRH1 | GPIO_AFRH_AFRH2))\ | (1 << (1 * 4)) | (1 << (2 * 4)); /* (2) */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_USORT1,ENABLE); Тактирование камушка без кварца от HSI 48МГц. Всю голову сломал не пойму в чем дело..... помогайте чем можете... Прям беда.... Может у кого рабочая реализация под этот камушек есть, поделитесь, поковыряю.....
0
|
25.11.2016, 17:46 | |
Ответы с готовыми решениями:
21
Ещё раз про клоны STM32 (GD32F103) STM32+1-Wire stm32 и single wire STM32: Шина 1-Wire и термометр DS18B20 Dallas DS1820 - STM32F407VG [Stm32 + 1-wire + DMA] |
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 382
|
|
25.11.2016, 18:33 | 2 |
Моя реализация stm32f0_ds18b20
STM32f050F4P6 (сейчас работает на STM32F030F4P6) Датчики подключается к PA.0 и PA.1 с подтяжкой 4,7к на +3.3В функция control_temp() (в main.c) вызывается раз в 10 сек. по таймеру TIM3 Результат передаётся по уарту с разделителем 0xAA перед температурой первого датчика и 0xBB перед вторым. Второй датчик в обработчике TIM3 закомментирован.
0
|
1 / 1 / 0
Регистрация: 06.04.2012
Сообщений: 138
|
|
25.11.2016, 18:41 | 3 |
Сообщение от judshym
0
|
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 237
|
|
25.11.2016, 18:52 | 4 |
Пара ссылок выданных поисковиком
http://we.iosyitistromyss.ru/STM32/stm3 ... -wire.html http://purebasic.mybb.ru/viewtopys.php?id=574 https://itistromyx.ru/forum/in... pys=105772 http://stm32f4-discovery.net/2015/07/ha ... stm32fxxx/
0
|
0 / 0 / 0
Регистрация: 21.11.2012
Сообщений: 1,400
|
|
25.11.2016, 18:55 | 5 |
Едрен батон! Бери мое (на гитхабе лежит) - почти полноценная железячная реализация на таймере с ПДП.
0
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
|
25.11.2016, 19:02 | 6 |
judshym, вы предлагаете подобный шлак людям????
Да и прежде чем вываливать подобный б.код, наведите порядок на своем компе Код
void ow_a_write_bit(uint8_t bit) { GPIOA->BSRR = GPIO_BSRR_BR_0; _Delay_us(bit ? 2 : 90);//2 ? 90 us GPIOA->BSRR=GPIO_BSRR_BS_0; _Delay_us(bit ? 90 : 2); //us 90 ? 2 us }
0
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 382
|
|
25.11.2016, 19:15 | 7 |
dosykus_2, предложите свой.
Что именно Вам не нравится?
0
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
|
25.11.2016, 19:27 | 8 |
Ну так вы хотя бы поинтересовались перед тем как свое вываливать, ссылка в первом же посту.
Софтовое ногодрочерство надо было забыть вместе с авр. А насчет компа- куча юзверей, да еще обозванных кириллицей- вам дадут шороха, если уже не дали
0
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 382
|
|
25.11.2016, 19:34 | 9 |
Я за основу взял это код
удалил задержки на основе пустых циклов for, сделал на системном таймере "большие" задержки и на asme пустым циклом сделал микросекундные задержки. Работоспособность проверял на проводах разной длины, а также при тактовой частоте 8МГц (цикл на асме, укоротил соответственно в 6 раз) Мне оказалось проще и надежнее поставить на порт один датчик.
0
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
|
25.11.2016, 19:55 | 10 |
Сообщение от judshym
Есть так же реализация на таймерах и DMA а это как минимум 16 датчиков одновременно без богомерзких задержек . По вашей ссылке коменты верны и однозначны - автор ССЗБ .
Сообщение от judshym
Ну а три - речь была не о Keil, а о вашем компе-помойке, рассаднике вирусов...
0
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 382
|
|
25.11.2016, 20:51 | 11 |
2. Позвольте напомнить, что МК STM32F030 у которого 1 UART, Мне UART нужен для других целей (например для сети ModBus). Предложите вариант как обойти указанные ограничения без "Софтовое ногодрочерства". От того, что у меня контроллер тупо пропустит десяток тактов, ни от моей задачи, ни от МК ни от меня не убудет. Или речь о чем то еще? Вы поймали из моего архива вирус?
0
|
3 / 3 / 0
Регистрация: 06.12.2016
Сообщений: 1,605
|
|
25.11.2016, 21:03 | 12 |
ИМХО - поставьте на 1wire малоногий авр и не надо мучиться.
А в STM32 - jбычный UART.
0
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
|
25.11.2016, 21:04 | 13 |
Весь ваш бред про, N комнат и N датчиков, МК STM32F030 у которого 1 UART и При тактовой частоте 8МГц, даже и обсуждать не собираюсь .
Пользовать софтовые задержки на камне с сильнейшей периферией , так же не от большого ума. Все это от тяжкого наследия авр и оно не лечится. Интересна реализация - один пин- один датчик и куча датчиков одновременно, изучайте железо -конкретно таймеры и DMA. Насчет utf8, я не говорил что в опциях нет выбора utf8 кодировки. Речь о том , что выбирать ее категорически нельзя. Создайте строку на кириллице и посмотрите во что выльется. Для танкистов объясню - символы в utf8 - два байта . Да и теперь есть выбор win1251...
0
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 382
|
|
25.11.2016, 21:40 | 14 |
Обычно форумы для того и существуют, чтобы подсказывать людям. Уж просветите людей с небольшим умом. Вам бы в битву экстрасенсов или другую подобную хрень. По куску проекта, определили мой ум, наследие, что творится у меня на компе и сколько там вирусов. Браво З.Ы. Извините за флуд. Больше не повторится
0
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
|
25.11.2016, 21:53 | 15 |
Не надо быть экстрасенсом, чтобы по исходникам определить быдлокод и что аврщиком писано.
Контроль версий вам и вашей "команде" так же неведом. Все ваши ляпы так и лезут наружу. Ну а в том что вам не хватает опыта и сообразительности( все что нужно уже озвучено ) это снова-таки ваши же проблемы. Ну может быть дойдет - таймеры и DMA ...
0
|
1 / 1 / 0
Регистрация: 06.04.2012
Сообщений: 138
|
|
25.11.2016, 22:14 | 16 |
dosykus_2, judshym ну прекращайте... К решению моего вопроса ваша перепалка не имеет никакого отношения!
Завтра (MSK) буду посмотреть на свежую голову все что мне советовали..... Будем надеяться, что я просто пропустил какой-то бит в регистрах UART. Хотя rm0360 в секциях GPIO,UART,DMA был прочитан раз 50....
0
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
|
25.11.2016, 23:11 | 17 |
Здесь под F0 уже выложил...
http://kazus.ru/forums/showthread.php?t=114001
0
|
1 / 1 / 0
Регистрация: 03.02.2011
Сообщений: 382
|
|
26.11.2016, 00:03 | 18 |
dosykus_2, ожидал увидеть Вашу реализацию Timer + DMA, которую так упорно продвигаете, эх... не моё.
За саму идею спасибо, не знал. До этого использовал DMA с другими модулями. Поправьте меня если ошибаюсь, но при использовании Timer + DMA нужно два канала timera, а как следствие две линии порта. Если так, то этот способ мне не подходит.
0
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 3,946
|
|
26.11.2016, 00:16 | 19 |
Идея и реализация не моя .
Один пин - один датчик. Пины в OD. Один таймер, три канала DMA ...
0
|
1 / 1 / 0
Регистрация: 06.04.2012
Сообщений: 138
|
|
26.11.2016, 13:40 | 20 |
Сообщение от dosykus_2
ReadRom работает стабильно с правильным результатом...... Сижу, ковыряю свою писанину на предмет поиска ошибок. Надеюсь разберусь.
0
|
26.11.2016, 13:40 | |
26.11.2016, 13:40 | |
Помогаю со студенческими работами здесь
20
Стопитсотый логгер Сайт про STM32 Мой новый сайт про stm32 и не только Про IDE для разработки под STM32 Мои статьи на хабре - про девайс на stm32 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |