Jump to content

    

adnega

Свой
  • Content Count

    3183
  • Joined

  • Last visited

Community Reputation

0 Обычный

2 Followers

About adnega

  • Rank
    Гуру
  • Birthday 05/01/1982

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

9457 profile views
  1. У вас в стираемом банке память под данные или под код тоже? С кешем данных не останавливается, но и после стирания данные берутся из кеша (в моем случае 0x00000000), а не меняются на 0xFFFFFFFF. Можно попробовать код разместить во втором банке, выполнить его, чтоб он закешировался, а потом стереть - это не пробовал. Подозрительно: проверка nDBANK выключена static bool isDualBank(void) { // cleared bit indicates dual bank //return (FLASH->OPTCR & FLASH_OPTCR_nDBANK) == 0; return true; }
  2. Противоречит википедии:
  3. А подтверждение есть?
  4. Дык, разве не делают? Тот же К1986ВЕ92QI?
  5. Проверил - все нормально работает. Правда, на F767ZI с 2МБ. Одна задача мигает диодиком с периодом 200 мс. В однобанковом режиме при стирании сектора светодиодик перестает мигать. В двухбанковом режиме - мигание не останавливается. void StartDefaultTask(void *argument) { for(;;) { HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_SET); osDelay(100); HAL_GPIO_WritePin(GPIOB, LD2_Pin, GPIO_PIN_RESET); osDelay(100); } } void StartTaskErase(void *argument) { FLASH_EraseInitTypeDef erase; uint32_t SectorError; while(HAL_GPIO_ReadPin(USER_Btn_GPIO_Port, USER_Btn_Pin) == GPIO_PIN_RESET); printf("wr0 %08X\r\n", *(int *)(0x081E0000)); HAL_FLASH_Unlock(); HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, 0x081E0000, 0); HAL_GPIO_WritePin(GPIOB, LD3_Pin, GPIO_PIN_SET); printf("wr1 %08X\r\n", *(int *)(0x081E0000)); TIM2->CR1 = 0; TIM2->ARR = 0xFFFFFFFF; TIM2->PSC = 0; TIM2->EGR = TIM_EGR_UG; TIM2->CNT = 0; TIM2->CR1 = TIM_CR1_CEN; erase.Banks = FLASH_BANK_2; erase.NbSectors = 1; erase.Sector = FLASH_SECTOR_23; erase.TypeErase = FLASH_TYPEERASE_SECTORS; erase.VoltageRange = FLASH_VOLTAGE_RANGE_3; HAL_FLASHEx_Erase(&erase, &SectorError); TIM2->CR1 = 0; printf("wr2 %08X\r\n", *(int *)(0x081E0000)); printf("Test %d, %d\r\n", (int)TIM2->CNT, (int)SectorError); for(;;) { HAL_GPIO_WritePin(GPIOB, LD3_Pin, GPIO_PIN_SET); osDelay(100); HAL_GPIO_WritePin(GPIOB, LD3_Pin, GPIO_PIN_RESET); osDelay(100); } } Сначала две попытки в однобанковом режиме, затем две в двухбанковом (частота TIM2 96МГц, запись порядка 1 секунды) И ОСь FreeRTOS.
  6. Меня это тоже сначала смутило, но вы пишите, что приоритет задачи низкий. У вас прерывания срабатывают с частотой порядка 20 кГц - может из-за этого потоку стирания совсем времени не достается. Стирание - процесс долгий. Если проверку BSY совместить с delay на 10 мс, а приоритет поднять на максимум, то как изменится поведение?
  7. Нужно убедиться, что nDBANK=0. По умолчанию этот бит взведен. Установить соответствующий барьер при стирании:
  8. Возможно, расстановщики разные бывают, но конкретно для нашего я проходил обучение в том месяце - за фидушку можно много чего принять. Причем, это должно быть элементом топологии, а не отверстие, т.к. сверловка в общем случае смещена относительно топологии. Станок перед расстановкой реперы проверяет, если смещение велико, то не расставляет.
  9. Несжатая прошивка в ПЛИС занимает довольно много памяти: Мне проще .rbf (по сути bin) записать при прошивке МК в выделенный регион памяти, чем каждый раз компилировать исходник, содержащий текстовый файл под 300 килобайт. Причем в будущем этот хардкод-массив не поменяешь - только прошивкой. А если только прошивкой, то она автоматом возрастает на 300 килобайт. Кста, после сжатия blink для EP2C5 занимает порядка 50 кбайт. $(PG) -c SWD UR -ME -P ./ep2_data.bin 0x08008000 -P $(MAIN_OUT_BIN) 0x08000000 -Halt -Rst -Run Такой командой ST-Link запишет конфигурацию ПЛИС в заданном регионе
  10. Неа. Я с вам за компанию про конструктив. Но волосатый Гоги пусть тоже не расслабляется ;)) Это очень важно. Но кроме задержки может быть еще кое-что. У нас на каждой плате стоит буфер на входе и выходе. Буферы чуть-чуть, но положение фронтов меняют, например по 20 нс срезают с лог 1. В итоге в длиной цепочке от скважности 2 на SCK может ничего и не остаться. Нужна схема и топология. С ADUM я лично и на CAN 1 Мбод пострадал. У них есть разные буковки, влияющие на скорость, причем очень сильно.
  11. Я уже лет 10 занимаюсь разработкой решений для светодиодных табло. Например, в табло АЗС может быть одна цепочка из 32 последовательно включенных 16-битных сдвиговых регистров. Или еще хуже HUB75 для цветных светодиодных матриц. Там вообще каждая матрица это 6 параллельных цепочек. В бомж-варианте я выход предыдущей цепляю на вход следующей (т.е. как бы 6 колец образуются). Все прекрасно работает на 30МГц. Да, резисторы по 10 Ом установлены последовательные, но это скорее предохранители. Откуда инфа, что 20 МГц SPI что-то особенного должен требовать? Как уже сказали - есть общие правила хорошей топологии - если им следовать, то все будет ок, и SPI тут ничем особенным не выделяется. Скидываете. Секретка - это у девочек в песочнице, поэтому ничего страшного. При работе с гостайной куча документов оформляется и вас бы просто не допустили с вашим стажем.
  12. Последнее время много "новичков" задают провокационные вопросы, типа, на каком языке программировать, или как развести мс 580-серии и т.п. И пропадают. И у этого ТС в вопросе тоже мало конкретики, а много провокации. ТС покажите пожалуйста накиданную схему и начатую топологию для этой схемы. Есть сомнения, что вам нужен ответ и вы тот за кого себя выдаете.