Перейти к содержанию
    

Andrey514

Свой
  • Постов

    95
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Andrey514

  • Звание
    Частый гость
    Частый гость

Контакты

  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

1 772 просмотра профиля
  1. Все верно! :) Спасибо! Биты SSM и SSI надо установить в единицу. Теперь ошибки не возникает, но передачи все равно нет. Програмная реализация SPI работает. Какая конфигурация ножки CS (она же NSS или SS) должна быть: альтернативная или обычная программная (выход)? Разобрался. Правильный код: SPI1_CR1= 1<<15| //BIDI MODE: 1-передача только в одну сторону 1<<14| //BIDI OE: 1-вывод включен (только передача) 0<<13| //CRC EN: 0-CRC не считать 0<<12| //CRC NEXT: 0-передача без CRC 0<<11| //DFF: 0- режим 8бит, 1- режим 16бит (SPE=0 надо запрещать) 0<<10| //RX ONLY: 0-режим передача и прием 1<< 9| //SSM: 0-режим slave запрещен 1<< 8| //SSI: 0<< 7| //LSB: FIRST 0-начинать со старш.бита 0<< 6| //SPE: 1-разрешение SPI 1<< 3| //BR[2:0] 0-clk:2, 1-clk:4 1<< 2| //MSTR: 1-мастер 1<< 1| //CPOL 1<< 0; //CPHA Конфигурация ножки CS (она же NSS или SS) должна быть обычная программная как выход. Спасибо всем, кто смотрел.
  2. Проблемы с SPI на STM32L151xxx

    При установке флага SPE, сбрасывается флаг MSTR в регистре SPI_CR1 контроллера STM32L151VBT6. В результате SPI не работает. В чем может быть проблема? void SPI_Config() { RCC_APB2ENR|= 0<<14|//USART1EN: 1<<12|//SPI1EN: 1-разр.SPI1 0<<11|//SDIOEN: 0<< 9|//ADC1EN: 0<< 4|//TIM11EN: 0<< 3|//TIM10EN: 0<< 2|//TIM9EN: 0<< 0;//SYSCFGEN: GPIOA_AFRL|= 5<<28|//7 вывод 5<<20;//5 вывод ConfPort_UltraLowPower(A, 7, cAlter, cPpull, cOut10MH, cNoPud); //SDA индикатора //SDA_HI; ConfPort_UltraLowPower(A, 5, cAlter, cPpull, cOut10MH, cPulDow); //SCL индикатора //SCL_LO; SPI1_I2SCFGR&= (ushort)~0x800; SPI1_CR1= 0<<15| //BIDI MODE: 1-передача только в одну сторону 1<<14| //BIDI OE: 1-вывод включен (только передача) 0<<13| //CRC EN: 0-CRC не считать 0<<12| //CRC NEXT: 0-передача без CRC 0<<11| //DFF: 0- режим 8бит, 1- режим 16бит (SPE=0 надо запрещать) 0<<10| //RX ONLY: 0-режим передача и прием 1<< 9| //SSM: 0-режим slave запрещен 0<< 8| //SSI: 0<< 7| //LSB: FIRST 0-начинать со старш.бита 0<< 6| //SPE: 1-разрешение SPI 1<< 3| //BR[2:0] 0-clk:2, 1-clk:4 1<< 2| //MSTR: 1-мастер 0<< 1| //CPOL 0<< 0; //CPHA //SPI1_I2SPR= 7; SPI1_CR1|= 0x40; //SPE: 1-разрешение SPI }
  3. В №9 посте писал, что пробовал без стирания флеша. Тогда проц подвисает(или неизвестно что с ним происходит) при попытке записи в OPTION-байт. Запись, при этом, разрешена: бит OPTWRE взведен, бит OPTPG взведен, бит LOCK снят, все в регистре FLASH_CR Прошелся отладчиком ST-LINK, в результате, по записи в OPTION байт, уходит в HARD_FAULT
  4. Совершенно верно. Затирание флеша и происходит. Но именно этот код представлен в примерах от ST. Пробовал закомментировать эту команду. Тогда подвисание происходит уже в процедуре FLASH_EnableWriteProtection(ProtectedPages) в месте: OB->WRP0 = WRP0_Data;
  5. Если ходить отладчиком, то отладчик "отваливается" в месте, где уже указывал. После этого флеш становится недоступной по чтению. Мне приходится снимать это сторонним программатором, т.е. разрешать ститывание флеши. Пример находится в любой библиотеке от ST, например: ...\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples\FLASH\Write_Protection\main.c
  6. В этой программе присутствует и запись в основную флеш. При этом, код расположен также во флеши. Все работает прекрасно, не глючит. :laughing: Там странная команда присутствует: При выполнении этой команды вся флеш стирается... В переменной rdptmp находится число 0xA5.
  7. Код расположен во FLASH прерывания запрещены запись в option_key register разрешена (проверял). Единственное, что неверно указал, тактируется процессор от HSI еще до инициализации HSE и PLL.
  8. Защита Flash из программы

    Доброго времени суток всем! Вопрос, думаю понятен из темы. В качестве примера взял образец кода из библиотеки версии "STM32F10x_StdPeriph_Lib_V3.5.0". Проц STM32F103T8 тактируется от внешнего кварца. Нужно записать защиту в Option-байты. Опытным путем установил,при попытке записи в регистр OB->RDP процессор зависает. /* Restore the last read protection Option Byte value */ OB->RDP = (uint16_t)rdptmp; У кого какие мысли по этому поводу? asd.zip
  9. Вопрос исчерпан. Большое спасибо!
  10. Получается, в каждой среде IAR, Atollic, Keil файл "stdint.h" всегда свой, а определение типа "uint32_t" у STMicroelectronics своё? И здесь не может быть никаких разногласий?
  11. А где брать файл "stdint.h"? В поставках библиотек от STMicroelectronics его нет.
  12. uint32_t для STM32

    Просматривал топики, и все же непонятно - где определен тип "uint32_t"? Вроде как в должен быть в файле stdint.h? Устанавливал среды IAR, Atollic. Там нет этого определения. Проясните пожалуйста.
  13. Не могу выполнить процедуру стирания флеш-страницы. Вызываю функцию: Write_EEPROM(c_AdrQq,Buf); Она один раз выполняется (сразу после прошивки процессора), а второй раз вызываю (по кнопке) - процессор зависает!!! Что я не так делаю? AOK.txt
  14. Подскажите документ, по которому Вы ориентировались по работе с Flash-памятью,плиз :rolleyes:
×
×
  • Создать...