реклама на сайте
подробности

 
 
> АЦП LPC1758 (недопустимое значение регистра ADTRIM)
jcxz
сообщение Jun 28 2016, 03:31
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Столкнулся с проблемой с АЦП в давно выпускаемом устройстве на LPC1758.
Модифицировали прошивку и перестало работать АЦП - выдаёт всё время 0xFFF (АЦП 12-битный).
Заливаешь старую прошивку - АЦП работает, значения меняются, новую - не работает.
Код инициализирующий периферию (ноги, PLL, другие порты и т.п.) - в новой прошивке абсолютно без изменений, код работающий с АЦП - тоже старый (файлы исходников байт-в-байт одинаковы).
После разборок выяснилось, что при старте ПО содержимое регистра ADTRIM разное: при старте старой прошивки там как и указано в даташите ==0xF00, при старте новой прошивки там почему то ==0.
Т.е.: ставлю процедуру инициализации АЦП в ассемблерный стартап-файл, третьей командой (первые две - запреты прерываний), в этой процедуре включаю тактирование АЦП и сразу считываю регистр ADTRIM - и вижу что в старой прошивке там опять как должно быть ==0xF00, а в новой =0. wacko.gif
Про этот регистр в даташите говорится, что он записывается boot-кодом и после записи калибровочных значений в младшие 8 бит, boot-код должен в биты 8-11 записать единицы, заблокировав тем самым модификацию этого регистра.
Получается, что boot-код каким-то образом определяет какая прошивка (старая версия или новая) и записывает или не записывает туда эти единицы в биты 8-11. wacko.gif
Много раз перешивал то старую прошивку, то новую (и размер их сделал одинаковыми на всякий случай) - после каждой перепрошивки в ADTRIM было 0xF00 для старой и 0 - для новой.
Бред какой-то!!!
Если при старте устройства, обнаружив что в битах 8-11 нули, записать туда единички (что должен делать boot-код), то АЦП начинает работать нормально.
Даташиты и ерраты все перерыл - на этот счёт там тишина.
Пока сделал костыль: если в битах 8-11 нули - пишу туда сам при старте ПО единицы. Но не понятно что писать в биты 0-7 (там калибровочные значения). И непонятно что будет дальше в других экземплярах МК?

Кто-нибудь сталкивался с этой проблемой?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Jun 28 2016, 10:08
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



А если InitADC выполнить позже, поменять с чем-нибудь?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 28 2016, 10:55
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(ViKo @ Jun 28 2016, 16:08) *
А если InitADC выполнить позже, поменять с чем-нибудь?

Оно и так позже стояло, это я в самое начало воткнул когда искал проблему. Думал может в коде который до неё выполняется где-то портится содержимое регистров управления АЦП или тактирования или ещё чего.
А в нормальном рабочем коде оно выполняется более чем через 130мс после старта, после кучи всякой другой инициализации (других драйверов железа).
И в рабочем коде чтение ADC идёт через DMA в burst-режиме. А когда искал баг я пробовал и в режиме программного запуска АЦП читать - значения одни и те же.

В даташите указывается что bootcode должен записать в ADTRIM значение некоего коэффициента, а потом установить lock-биты (8-11). Получается в каких-то случаях он этого не делает...... wacko.gif
Код
bits 3:0 - reserved. NA
bits 7:4 - ADCOFFS    Offset trim bits for ADC operation. Initialized by the boot code. Can be overwritten by the user.  reset value = 0
bits 11:8 - TRIM written-to by boot code. Can not be overwritten by the user. These bits are locked after boot code write. reset value = 1111
Go to the top of the page
 
+Quote Post
Alechek
сообщение Jun 28 2016, 13:27
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(jcxz @ Jun 28 2016, 15:55) *
В даташите указывается что bootcode должен записать в ADTRIM значение некоего коэффициента, а потом установить lock-биты (8-11). Получается в каких-то случаях он этого не делает...... wacko.gif

Слабо верится в то, что содержимое рабочей области флэша влияет на загрузчик. Более верю в то, что выполняется рабочий код с ошибкой, поганит что-то, потом происходит сброс (переход на AppStart) и далее с вытекающими.
Совет поставить бряку на ADTRIM остается в силе. Даже если оно завязано на заводской загрузчик, по коду можно понять, в чем дело.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- jcxz   АЦП LPC1758 (недопустимое значение регистра ADTRIM)   Jun 28 2016, 03:31
- - ViKo   Может быть, вы не выдерживаете какие-то времена, п...   Jun 28 2016, 05:28
|- - jcxz   Цитата(ViKo @ Jun 28 2016, 11:28) Может б...   Jun 28 2016, 05:53
- - Alechek   Значит, запукать дебагер с брякой на запись даных ...   Jun 28 2016, 06:11
|- - jcxz   Цитата(Alechek @ Jun 28 2016, 12:11) Знач...   Jun 28 2016, 06:45
- - ViKo   У STM есть datasheet, в нем все времена описаны. Г...   Jun 28 2016, 08:02
|- - jcxz   Цитата(ViKo @ Jun 28 2016, 14:02) У STM е...   Jun 28 2016, 08:18
|- - ViKo   Цитата(jcxz @ Jun 28 2016, 11:18) Я же уж...   Jun 28 2016, 08:56
|- - jcxz   Цитата(ViKo @ Jun 28 2016, 14:56) Понятно...   Jun 28 2016, 09:38
|- - jcxz   Цитата(Alechek @ Jun 28 2016, 19:27) Слаб...   Jun 28 2016, 13:40
|- - Alechek   Цитата(jcxz @ Jun 28 2016, 18:40) Происхо...   Jun 29 2016, 04:40
|- - jcxz   Цитата(Alechek @ Jun 29 2016, 10:40) Втор...   Jun 29 2016, 07:02
- - zltigo   Абстрагируйтесь от этого несчастного ADTRIM - ADC,...   Jun 28 2016, 14:49
|- - jcxz   Цитата(zltigo @ Jun 28 2016, 20:49) Абстр...   Jun 29 2016, 04:04
|- - zltigo   QUOTE (jcxz @ Jun 29 2016, 07:04) Возможн...   Jun 29 2016, 04:27
|- - KRS   Цитата(jcxz @ Jun 29 2016, 07:04) И по ка...   Jun 29 2016, 06:07
- - Obam   " А зачем тогда среди сигналов JTAG есть сигн...   Jun 29 2016, 08:13
|- - jcxz   Цитата(Obam @ Jun 29 2016, 14:13) " ...   Jun 29 2016, 08:17
|- - Obam   Цитата(jcxz @ Jun 29 2016, 12:17) И...? ...   Jun 29 2016, 08:55
- - Alechek   И Цитата("UM10360")The flash boot loader...   Jun 29 2016, 09:06
|- - jcxz   Цитата(Alechek @ Jun 29 2016, 15:06) ...   Jun 29 2016, 09:36
- - Alechek   По \TRST периферия НЕ СБРАСЫВАЕТСЯ. А вот дал...   Jun 29 2016, 10:26
|- - jcxz   Цитата(Alechek @ Jun 29 2016, 16:26) По ...   Jun 29 2016, 10:37
|- - KRS   Цитата(jcxz @ Jun 29 2016, 13:37) Наверно...   Jun 30 2016, 08:34
|- - jcxz   Цитата(KRS @ Jun 30 2016, 14:34) IMHO луч...   Jun 30 2016, 08:54
|- - jcxz   Цитата(KRS @ Jun 30 2016, 14:34) IMHO луч...   Jul 10 2016, 06:01
- - Alechek   Сейчас занимаюсь с LPC1754. В настройках JLINK сто...   Jun 29 2016, 18:34
- - jcxz   Цитата(Alechek @ Jun 30 2016, 00:34) Сейч...   Jun 30 2016, 03:07


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 03:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.02158 секунд с 7
ELECTRONIX ©2004-2016