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

Axel

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    1

Весь контент Axel


  1. Важен порядок передачи байтов - начинать со старшего. Ну и обязательно дождаться статуса окончания записи. И еще пин разрешеня записи сбросить в "0".
  2. LPC1768 и RTC

    NXP из-за этого "класса" задерживают старшие версии этой серии. Но к июлю обещают все залатать...
  3. Первое, что приходит в голову: проверьте настройку SPI - в смысле фазы данных и клока. Не поможет - надо смотреть код. У меня есть опыт с M25P32 - это вроде из одного класса. Проблем не было...
  4. Давным-давно, кажется в прошлую пятницу © довелось мне использовать сенсоры SHT75. ИМХО простенько и со вкусом. Помнится, я и программу поддержки для MSP430 на форуме выкладывал. Поищите, если интересно...
  5. LPC2387

    Вообще-то while ( ((PLLSTAT & (1 << 26)) == 0) ); и while (!(PLLSTAT & 0x02000000)); не синонимы. Надо-бы: while (!(PLLSTAT & 0x04000000)); У меня работает так: m_val = 0x0B; n_val = 0; do { stat_value = PLLSTAT; } while (((stat_value & 0x00007FFF) != m_val) || (((stat_value & 0x00FF0000) >> 16) != n_val) || !(stat_value & (1 << 26)));
  6. Мой код практически такой-же: u8 flash_write(u8 *prog_data) { u8 i; u8 res = COMPLETE; u8 *write_addr = (u8 *)(*((u16 *)prog_data)); u16 size = *(u16 *)(prog_data + 2); u8 *data_addr = (u8 *)(prog_data + 4); asm("fclr i"); fmr0 = 0x01; asm(" "); fmr0 = 0x03; // CPU rewrite enable fmr1 = 0x80; asm(" "); fmr1 = 0x82; // EW1 mode for( i = 0; i < size; i++ ) { write_addr[i] = 0x40; write_addr[i] = data_addr[i]; while( fmr00 != 1 ); if( fmr06 == 1 ) // Program error { *write_addr = 0x50; // Clear stutus register res = DATA_PROGRAM_ERR; break; } } fmr0 = 0x01; // CPU rewrite disable asm("fset i"); return res; } / u8 block_erase(u8 block_num) { u8 res = COMPLETE; u8 *ers_addr; switch(block_num) { case 0: ers_addr = (u8 *)BLOCK_A; break; case 1: ers_addr = (u8 *)BLOCK_B; break; case 2: ers_addr = (u8 *)BLOCK_0; break; default: return ERASE_ERR; } asm("fclr i"); fmr0 = 0x01; asm(" "); fmr0 = 0x03; // CPU rewrite enable fmr1 = 0x80; asm(" "); fmr1 = 0x82; // EW1 mode *ers_addr = 0x20; // Block erase command write *ers_addr = 0xd0; // Block erase command write while( fmr00 != 1 ); if( fmr07 == 1 ) { *ers_addr = 0x50; // Clear stutus register res = ERASE_ERR; } fmr0 = 0x01; // CPU rewrite disable asm("fset i"); return res; } Может что-нибудь с запретом прерываний?
  7. Я использую отдельный банк для периодически обновляемых таблиц (проц R5F211B4). Около полутора сотен попыток были успешными. Может чего в коде неаккуратно... Или дополнительный кондер на питание... Или бубен...
  8. Скорее недочитал... 1. Соединить пин "Erase" (55) c +3.3V. Подключить/отключить J-Link. Отсоединить. 2. Соединить пины PA0, PA1, PA2, TST с +3.3V. Подключить J-Link на 10 секунд. Отлючить. Отсоединить все. 3. Подключить J-Link. Запустить SAM-BA (обычную, не cdc). Она сама предложит порт. 4. В строке "Send File Name" указать имя прошивки. Нажать "Send File" 5. Отказаться от блокирования памяти после загрузки. 6. Запустить J-Link.exe и согласиться на апдейт. Все... Ну и конечно вначале установить перемычки.
  9. Рекомендую - на основе собственного опыта - TNKernel. Бесплатная, прозрачная, с открытыми исходниками. Имеющиеся примеры помогают быстро освоить. Подводные камни - только традиционные, типа инверсии приоритетов. Я доволен...
  10. STM32 или LPC17xx?

    Описаны, конечно... Только мне этого не хватило. Без текстов библиотек до нужной степени не разобрался. Но допускаю, что это только мои проблемы...
  11. STM32 или LPC17xx?

    По поводу STM32 - необходимость расковыривать библиотеки для того, чтобы написать нормальный код, действительно огорчает. Но к этому быстро привыкаешь (ИМХО). Кроме того - не вполне настоящий DMA - в смысле того, что он не имеет своей шины. Но в остальном - вполне рабочая лошадка.
  12. Это здесь (если судить по написанному здесь). Вроде бесплатно...
  13. Их навалом в Инете... Я один такой прикрутил к проекту на LPC23, выход - через АЦП. Вроде ничего звучит. Памяти требует - 4kB на секунду звука, RAMa - совсем немного.
  14. SPI - аппаратный ресурс, который "шарится" между различными задачами, поэтому отдельная SPI-задача может иметь смысл (ИМХО). Правда нормально это будет работать, если при этом не требуется перенастройки (скорость, полярность клока и т.д.).
  15. А что, индуктивность уже отменили? Речь вроде как идет об импульсах, и, вероятно, адекватной длительности...
  16. STM32F107

    Собирайте глаза в кучку и оба в Reference Manual. Там все есть. А конкретно так: BOOT1 - на землю, а BOOT0 переключаете: на "0" - Normal Mode, на "+" - Boot Mode.
  17. Только поторопиться - балка видимо "потекла". Помрет скоро...
  18. Там есть фишка синхронного преобразования, но только по двум каналам. Три не получится...
  19. NXP LPC2388 Греется

    Является...LPC2378 / 2478 на полном разгоне, с USB, внешней памятью и другой периферией потребляющие ок 110 ма, я бы определил как "чуть теплые". Думаю, надо искать дальше...
  20. Посмотрите это: http://www.intrepidsupport.com/ICSDocument...re/neoOBDII.htm Верятно это "Low Speed Fault Tolerant CAN"
  21. Коллеги! Если имеете какие-нибудь средства разработки для TriCore (TC1796 и иже с ним) - поделитесь pls!
  22. Была несколько похожая проблема с аналогичными чипами - не прошивались J-Link'ом. Но после первой прошивки Wiggler'ом в дальнейшем все работало (в смысле J-Link). З.Ы.: Утилита JLinkSTM32 от Segger (Flash unlock) не помогала.
  23. Традиционно для повышения помехоустойчивости неиспользуемые пины программируются на выход (или "как выходы") и на них выводятся нули. Но даже и без этого я ничего подобного не припомню (в т.ч. и с конкретно этими чипами). Похоже Ваши проблемы в железе...
×
×
  • Создать...