К микроконтроллеру подключена MMC карта. Для обмена информацией используется режим SPI. Для начальной инициализации применяются команды CMD0 и CMD1, и далее задается длина блока командой CMD16. Для чтения данных используется команда CMD18 (READ_MULTIPLE_BLOCK) с остановкой по команде CMD12. Для записи используется CMD25 (WRITE_MULTIPLE_BLOCK) с остановкой по «Stop Tran», ожиданиями «Busy» и последующим чтением регистра статуса CMD13. С картами MMC и MMC plus различных емкостей программа работает без проблем. Проблема появляется с картами MMC mobile Dual-Voltage, проверено несколько образцов Kingston 1GB и No name 1GB. Карты нормально инициализируются и нормально функ-ционируют при операциях чтения. При записи, после 4-5 команды CMD25, происходит «зависание» карты, и она больше не отвечает ни на какие команды. При этом повторяе-мость 100%, т.е. это не случайные сбои. На снятой осциллограмме данный процесс выглядит следующим образом. После передачи данных последнего записываемого сектора, карта отвечает «Data accepted» и выставляет «Busy». После снятия «Busy», микроконтроллер передает «Stop Tran». Карта повторно вы-ставляет «Busy» и достаточно быстро, по сравнению с другими операциями записи, его снимает. После этого карта не реагирует ни на какие сигналы. Питание, диаграммы сигна-лов и т.д. в норме.
|