Программирование STM8
Re: Программирование STM8
Из IAR 3.2 если делаю очистку памяти (project/download/erase) на stm8s003/103f3 то взводится ROP
Который потом удаётся снять только в stvp
От чего так?
Который потом удаётся снять только в stvp
От чего так?
- Реклама
Re: Программирование STM8
а можно ли вывести два STM8 на один разъем SWIM при этом переключать или NRST или SWIM пин?
по идее что тот что тот если от одного МК отключить этот пин он не отреагирует на работу программатора
по идее что тот что тот если от одного МК отключить этот пин он не отреагирует на работу программатора
- alex38779
- Потрогал лапой паяльник
- Сообщения: 386
- Зарегистрирован: Чт окт 31, 2013 10:54:32
- Контактная информация:
Re: Программирование STM8
Всем привет!
Столкнулся с проблемой при работе stm8s003 с eeprom 24с02 по i2c
I2C настроен верно. Я отправляю старт и адрес устройства, устройство прижимает линию - появляется сигнал АСК. На 24c02 для теста перекидываю А0-А1 на другое состояние - уже NAK. Т.е. эта часть работает верно.
Далее хочу записать в 24c02 какие данные - тут тишина. После приема адреса, идет сразу стоп и все.. Натолкните на мысли что не так.
Код:
{
uint32_t status = 0;
/*Формируем старт*/
while(!(I2C->SR3 & I2C_SR3_BUSY))
I2C->CR2 |= I2C_CR2_START;
/*EV5 - шлем адрес устройства*/
while(!(I2C->SR1 & I2C_SR1_SB))
//a1 - 10100001 - чтение
//a0 - 10100000 - запись
I2C->DR = 0xa0;
/*EV6*/
while(!(I2C->SR1 & I2C_SR1_ADDR))
/*Очищаем*/
status = I2C->SR3;
I2C->SR3;
/*Шлем адрес для записи*/
while(!(I2C->SR1 & I2C_SR1_TXE))
I2C->DR = 0x01;
/*Данные для записи*/
while(!(I2C->SR1 & I2C_SR1_TXE))
I2C->DR = 0x01;
/*Формируем стоп*/
while(!((I2C->SR1 & I2C_SR1_TXE) && (I2C->SR1 & I2C_SR1_BTF)))
I2C->CR2 |= I2C_CR2_STOP ;
}
Изображение с лог анализатора

Столкнулся с проблемой при работе stm8s003 с eeprom 24с02 по i2c
I2C настроен верно. Я отправляю старт и адрес устройства, устройство прижимает линию - появляется сигнал АСК. На 24c02 для теста перекидываю А0-А1 на другое состояние - уже NAK. Т.е. эта часть работает верно.
Далее хочу записать в 24c02 какие данные - тут тишина. После приема адреса, идет сразу стоп и все.. Натолкните на мысли что не так.
Код:
Спойлер
void IC_EEPROM(void){
uint32_t status = 0;
/*Формируем старт*/
while(!(I2C->SR3 & I2C_SR3_BUSY))
I2C->CR2 |= I2C_CR2_START;
/*EV5 - шлем адрес устройства*/
while(!(I2C->SR1 & I2C_SR1_SB))
//a1 - 10100001 - чтение
//a0 - 10100000 - запись
I2C->DR = 0xa0;
/*EV6*/
while(!(I2C->SR1 & I2C_SR1_ADDR))
/*Очищаем*/
status = I2C->SR3;
I2C->SR3;
/*Шлем адрес для записи*/
while(!(I2C->SR1 & I2C_SR1_TXE))
I2C->DR = 0x01;
/*Данные для записи*/
while(!(I2C->SR1 & I2C_SR1_TXE))
I2C->DR = 0x01;
/*Формируем стоп*/
while(!((I2C->SR1 & I2C_SR1_TXE) && (I2C->SR1 & I2C_SR1_BTF)))
I2C->CR2 |= I2C_CR2_STOP ;
}
Спойлер

- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Программирование STM8
А вы два раза читаете sr3, может в этом дело?EV6:ADDR=1, cleared by reading SR1 register followed by reading SR3.
- alex38779
- Потрогал лапой паяльник
- Сообщения: 386
- Зарегистрирован: Чт окт 31, 2013 10:54:32
- Контактная информация:
Re: Программирование STM8
[uquote="Z_h_e",url="/forum/viewtopic.php?p=3398431#p3398431"]
Пробовал по разному. Все ровно результата ноль.
А вы два раза читаете sr3, может в этом дело?[/uquote]EV6:ADDR=1, cleared by reading SR1 register followed by reading SR3.
Пробовал по разному. Все ровно результата ноль.
- Реклама
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Программирование STM8
Я I2C на stm8 не юзал, вообще как то не люблю I2C.
Для пробы, может поставить тупые паузы между каждым EVn?Due to timing constraints, when in standard mode if CCR is less than 9 (i.e. with peripheral clock below 2 MHz) with
f
MASTER = fCPUand the event interrupt disabled, the following procedure must be followed:
modify the reset sequence in order to insert at least 5 cycles between each operations in the flag clearing sequence. For
example, when fMASTER = fCPU= 1 MHz, use the following sequence to poll the SB bit:
_label_wait: BTJF I2C_SR1,SB,_label_wait
NOP ;
NOP;
NOP ;
NOP
NOP
LD I2C_DR, A ; once executed, the SB bit is then cleared.
Re: Программирование STM8
Об этом много уже говорилось, что I2C Master у STM8 весьма крив и без принятия особых мер не работает. Можно почитать эррату производителя, а лучше сразу поискать работающие примеры в сети.
Re: Программирование STM8
[uquote="alex38779",url="/forum/viewtopic.php?p=3398052#p3398052"]Далее хочу записать в 24c02 какие данные - тут тишина. После приема адреса, идет сразу стоп и все.. Натолкните на мысли что не так.[/uquote]
Непонятно. В какой момент идет. Вы что-то в пзушку записали, а теперь пытаетесь там прочесть и.... фиг там??? Или в момент записи в пзу внезапно стоп??
Запись в стм в принципе проблем никаких. А вот чтение это полная жопа.
Непонятно. В какой момент идет. Вы что-то в пзушку записали, а теперь пытаетесь там прочесть и.... фиг там??? Или в момент записи в пзу внезапно стоп??
Запись в стм в принципе проблем никаких. А вот чтение это полная жопа.
- alex38779
- Потрогал лапой паяльник
- Сообщения: 386
- Зарегистрирован: Чт окт 31, 2013 10:54:32
- Контактная информация:
Re: Программирование STM8
Всем привет.
Не могу понять как затактировать, на stm8, какой таймер от 32768Гц что бы считать время, без использования RTC. При этом мне надо что бы остальная перефирия работала на другой частоте.
Можно ли это как то реализовать или я нафантазировал?
Не могу понять как затактировать, на stm8, какой таймер от 32768Гц что бы считать время, без использования RTC. При этом мне надо что бы остальная перефирия работала на другой частоте.
Можно ли это как то реализовать или я нафантазировал?
- Z_h_e
- Собутыльник Кота
- Сообщения: 2708
- Зарегистрирован: Сб май 14, 2011 21:16:04
- Откуда: г. Чайковский
Re: Программирование STM8
Таймер 1 имеет отличный предделитель. Ну или я вопрос не понял.
Re: Программирование STM8
[uquote="alex38779",url="/forum/viewtopic.php?p=3408914#p3408914"]Не могу понять как затактировать, на stm8, какой таймер от 32768Гц что бы считать время, без использования RTC. При этом мне надо что бы остальная перефирия работала на другой частоте.[/uquote]
Таймеры у STM8S тактируются от MASTERCLOCK и я не припоминаю способа, чтобы это можно было как-то изменить. Другой вариант, что я возможно ничего не знаю о конкретной модели STM8, которую вы имеете ввиду.
Таймеры у STM8S тактируются от MASTERCLOCK и я не припоминаю способа, чтобы это можно было как-то изменить. Другой вариант, что я возможно ничего не знаю о конкретной модели STM8, которую вы имеете ввиду.
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: Программирование STM8
Приветствую. Изучаю STM8 в лице STM8L152C6T6. Не могу определить программатором STVD + ST-LINK V2 контроллер. Подключил по минимуму: выв. 2 - NRST, выв. 1 - SWIM. выв. 9,40 - GND, выв. 10,39 - 3,3В. Еще резистор 10к от NRST на 3,3В. Ни в какую не читается. Что странно - NRST вроде подтянут на +, а на нем 0 даже если отключить от ST-LINK.
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Re: Программирование STM8
Alexey_N, если это оригинал стлинк, а не клон, потрудитесь подать питание на вывод стлинк Vtarget .
Так же запитаны должны быть все пины питания в том числе и аналоговые - VDDA.
Потдяжка NRST чушт полная.
Так же запитаны должны быть все пины питания в том числе и аналоговые - VDDA.
Потдяжка NRST чушт полная.
Последний раз редактировалось dosikus Ср июл 04, 2018 20:24:39, всего редактировалось 2 раза.
Re: Программирование STM8
Конденсатор к МК подключили?
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: Программирование STM8
2 dosikus
Клон конечно
Аналоговые я не запитывал то ....
2 Мурик
А куда?
Клон конечно
2 Мурик
А куда?
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Re: Программирование STM8
А аналоговые питают домен ресета.
Вы уникум..
Попробуйте начать читать окументацию, и в первую очередь выкачайте Квик старт с стм 8L ...
Вы уникум..
Попробуйте начать читать окументацию, и в первую очередь выкачайте Квик старт с стм 8L ...
- Alexey_N
- Сверлит текстолит когтями
- Сообщения: 1273
- Зарегистрирован: Вт фев 01, 2011 17:56:40
- Откуда: г. Жуковка, Брянская обл.
Re: Программирование STM8
О, вроде ожил! пишет что контроллер защищен, значит читает.
2 dosikus
Так с платами китайскими в основном дело имел, а тут просто контроллер голый
Почитаю конечно) Надо разобраться.
Благодарю!
2 dosikus
Так с платами китайскими в основном дело имел, а тут просто контроллер голый
Почитаю конечно) Надо разобраться.
Благодарю!
Индукционный нагреватель - 20% (наладка). TIG сварка - 10% (детальки)
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
ВЧ генератор 150МГц - 80% (наладка). Мостовой ИИП - 40% (подкл. ОС).
Re: Программирование STM8
Alexey_N, да и -лучше осваивайте стм32. Серия F0 лучшая замена 8ми биткам. Стм8 начинает отмирать...
Re: Программирование STM8
STM8 был интересен только своей ценой, а раз цены выросли на stm8 про них можно забыть в пользу STM32 F0 и USB на STM32F030 работает куда лучше чем на STM8
Re: Программирование STM8
По непонятной причине даже при покупке сотнями на али, цена на STM32 ниже, чем на STM8. STM32F030F4P6 выходят по 26 руб за корпус, а STM8S003F3P6 по 36 руб. Что за чудеса ценообразования, не очень понятно.



