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

 
 
> Реальный пример установки защиты, STM32, Lock_Bits
RomanRom
сообщение May 14 2012, 06:31
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 231
Регистрация: 14-02-05
Пользователь №: 2 635



Что означает распространенная в Интернете фраза о том, что после установки бита защиты LCKR снять защиту можно только после сброса. Сброса какого? Аппаратного кнопкой RESET или программного? Кто-нибудь может привести короткую программу, на которой четко было бы видно - вот есть защита (светодиод светится), вот что-тосбрасываем, а вот защита снимается (светодиод не светится)?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aner
сообщение May 15 2012, 12:18
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Да и так понятно, зачем еще цитату. Еще попросите на английском языке писать вопросы, тогда ваабще не к чему придраться.
Из программы читаем регистр по адресу F800, Если FF то CP. Если A5 -Default. Вот и напишите программу для светодиода на нужном потру.
Go to the top of the page
 
+Quote Post
RomanRom
сообщение May 15 2012, 12:39
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 231
Регистрация: 14-02-05
Пользователь №: 2 635



Вот цитата и перевод из интернетовского документа STM32_DOC_RU.chm

This register is used to lock the configuration of the port bits when a correct write sequence is applied to bit 16 (LCKK). The value of bits [15:0] is used to lock the configuration of the GPIO. During the write sequence, the value of LCKR[15:0] must not change. When the LOCK sequence has been applied on a port bit it is no longer possible to modify the value of the port bit until the next reset.

Этот регистр используется для блокировки конфигурации битов порта, когда применена правильная последовательность записи к биту 16 (LCKK). Для блокировки конфигурации GPIO используется значение битов [15:0]. Во время последовательности записи значение LCKR [15:0] не должно изменяться. Когда последовательность процедуры блокировки была применена к биту порта, то его конфигурацию больше нельзя изменить до следующего сброса.

То есть, правильно ли я понимаю, что слово "reset" относится не к сбросу микроконтроллера, а всего лишь к сбросу бита в LCKR?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 15 2012, 13:30
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(RomanRom @ May 15 2012, 15:39) *
То есть, правильно ли я понимаю, что слово "reset" относится не к сбросу микроконтроллера, а всего лишь к сбросу бита в LCKR?

Нет. По смыслу цитаты речь идёт о сбросе контроллера.
Go to the top of the page
 
+Quote Post
VslavX
сообщение May 16 2012, 05:08
Сообщение #5


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(_Артём_ @ May 15 2012, 16:30) *
По смыслу цитаты речь идёт о сбросе контроллера.

Именно. Причем по моему опыту сброс через внешний вход ~RESET не помогает. После стирания битов еще приходится делать Power Cycling - тогда только защита гарантировано отключается.
Go to the top of the page
 
+Quote Post
RomanRom
сообщение May 17 2012, 04:54
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 231
Регистрация: 14-02-05
Пользователь №: 2 635



Цитата(VslavX @ May 16 2012, 08:08) *
Именно. Причем по моему опыту сброс через внешний вход ~RESET не помогает. После стирания битов еще приходится делать Power Cycling - тогда только защита гарантировано отключается.

Вопрос 1 - Power Cycling относится к установке защиты GPIO или к защите флэш-памяти. Как в программе сделать Poer Cycling?

Вопрос 2. В нижеприведенной программе сначала зажигается лампочка на PC8, затем ставится защита LCKR, а затем PC8 переводится в режим входа. Если защита установлена правильно, то лампочка должна гореть, а у меня она гаснет (хотя если убрать блок из 4 нижних строк, то светится). Почему не устанавливается защита?

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"

int main(void)
{ int tmp;
//Конфигурирование GPIOC.8
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // Разрешить тактирование GPIOC
GPIOC->CRH &= ~GPIO_CRH_MODE8; //очистить разряды MODE
GPIOC->CRH &= ~GPIO_CRH_CNF8; //очистить разряды CNF
GPIOC->CRH |= GPIO_CRH_MODE8_0; //выход, 10MHz
GPIOC->CRH &= ~GPIO_CRH_CNF8; //общего назначения, симетричный
GPIOC->BSRR = GPIO_BSRR_BS8; //GPIOC.8=1

GPIOC->LCKR |= GPIO_LCKR_LCK8; //включение защиты настроек
GPIOC->LCKR |= GPIO_LCKR_LCKK; //Записать в LCKK "1”-"0”-"1”
GPIOC->LCKR &= ~GPIO_LCKR_LCKK; //
GPIOC->LCKR |= GPIO_LCKR_LCKK; //
tmp = GPIOC->LCKR; //Две операции чтения регистра LCKR
tmp = GPIOC->LCKR;

//Конфигурирование GPIOC.8
GPIOC->CRH &= ~GPIO_CRH_MODE8; //очистить разряды MODE
GPIOC->CRH &= ~GPIO_CRH_CNF8; //очистить разряды CNF
GPIOC->CRH |= GPIO_CRH_CNF8_1; //дискретный вход, подтяжка к "земле"
GPIOC->BSRR = GPIO_BSRR_BR8; //включить подтягивающий резистор

while(1);
}
Go to the top of the page
 
+Quote Post
RomanRom
сообщение May 18 2012, 08:37
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 231
Регистрация: 14-02-05
Пользователь №: 2 635



Может ли кто-то проверить по указанному выше листингу установку защиты на линии PC8?

Возможно требуется включить еще какое-то дополнительное тактирование в регистрах RCC или вводить задержки во времени?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение May 18 2012, 08:41
Сообщение #8


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Попробуйте вот так:
Код
    GPIOC->LCKR = GPIO_LCKR_LCK8 | GPIO_LCKR_LCKK;
    GPIOC->LCKR = GPIO_LCKR_LCK8;
    GPIOC->LCKR = GPIO_LCKR_LCK8 | GPIO_LCKR_LCKK;
    GPIOC->LCKR = GPIO_LCKR_LCK8;
    tmp = GPIOC->LCKR;


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- RomanRom   Реальный пример установки защиты   May 14 2012, 06:31
- - RomanRom   Ладно, упростим вопрос. Из перевода референс манул...   May 15 2012, 10:39
- - Aner   Его сброса, этого бита LCKR. При его сбросе память...   May 15 2012, 11:58
- - cioma   Для исключения трудностей перевода, приведите цита...   May 15 2012, 12:03
||- - RomanRom   Цитата(AHTOXA @ May 18 2012, 11:41) Попро...   May 18 2012, 08:58
|- - VslavX   Цитата(VslavX @ May 16 2012, 08:08) Именн...   May 18 2012, 08:49
- - Corvus   А для чего может потребоваться такая защита на пра...   May 18 2012, 10:22
|- - RomanRom   Цитата(Corvus @ May 18 2012, 13:22) А д...   May 18 2012, 11:11
- - AHTOXA   Цитата(RomanRom @ May 18 2012, 14:58) Про...   May 18 2012, 11:16
- - RomanRom   AНTOXA А на каком компиляторе и с какой оптимизаци...   May 18 2012, 11:37
- - AHTOXA   Всё нормально у вас. Вы залочили конфигурацию ножк...   May 18 2012, 16:24
- - RomanRom   AHTOXA, спасибо. Осталось еще чуть-чуть. Защита у...   May 19 2012, 10:38
- - AHTOXA   По кнопке сброса снова запускается ваша программа,...   May 19 2012, 11:22


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

 


RSS Текстовая версия Сейчас: 29th June 2025 - 00:39
Рейтинг@Mail.ru


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