|
LPC2104 и RL-FlashFS, Помогите подружить |
|
|
|
Aug 29 2009, 09:33
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 3-12-08
Пользователь №: 42 171

|
Добрый день всем. Разведена платка с SD карточкой и 2104 камушком. Камушки пришли самой первой ревизии, без SSP. Написал драйверочек под простой SPI(кто осваивал RL-FlashFS знает, там надо 4 функции написать). Ставлю finit() в самом начале проги, при сбросе проц доджен пытаться инициализировать карту. Что интересно, два сброса finit возвращает 1(карта не инициирована) на третий сброс программа застревает внутри этого finit и сыплет какую то шелуху по спиайным ногам. И повторяется эта картина железно - сброс, сброс, застряла, сброс, сброс, застряла. Чтобы отсечь ненужные вопросы сразу скажу - с железом все в порядке. С карточками раньше работал. Взял программку инициации карточки из своего проекта на авр, посадил сверху на упомянутый драйверочек SPI, засунул в 2104 в этой проблеммной платочке - карта отзывается, инициализируется. Но хочется заставить её работать из под RL-FlashFS. Поэтому хочется услышать совет людей, портировавших сабж на камни 2104/05/06 с простым SPIем. Заранее спасибо. На всяки случай - виснет здесь:
U8 spi_send (U8 outb) { /* Write and Read a byte on SPI interface. */
/* Wait if TNF cleared, Tx FIFO is full. */ // while (!(SSPSR & TNF)); S0SPDR = outb;
/* Wait if RNE cleared, Rx FIFO is empty. */ while (!(S0SPSR &(1<<7))); return (S0SPDR); }
|
|
|
|
|
 |
Ответов
|
Aug 31 2009, 14:40
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Меня несколько смутили слова "FIFO" и упоминания SSPSR - это самый что ни на есть SSP. Открыл даташит на LPC2104, там уже всё расписано: Цитата Master Operation The following sequence describes how one should process a data transfer with the SPI block when it is set up to be the master. This process assumes that any prior data transfer has already completed. 1. Set the SPI clock counter register to the desired clock rate. 2. Set the SPI control register to the desired settings. 3. Write the data to transmitted to the SPI data register. This write starts the SPI data transfer. 4. Wait for the SPIF bit in the SPI status register to be set to 1. The SPIF bit will be set after the last cycle of the SPI data transfer. 5. Read the SPI status register. 6. Read the received data from the SPI data register (optional). 7. Go to step 3 if more data is required to transmit. Note that a read or write of the SPI data register is required in order to clear the SPIF status bit. Therefore, if the optional read of the SPI data register does not take place, a write to this register is required in order to clear the SPIF status bit.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
|
Aug 31 2009, 17:54
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 3-12-08
Пользователь №: 42 171

|
Цитата(esaulenka @ Aug 31 2009, 21:40)  Меня несколько смутили слова "FIFO" и упоминания SSPSR - это самый что ни на есть SSP.
Открыл даташит на LPC2104, там уже всё расписано: Как же мне вам написать, чтобы вы меня поняли... Я умею работать с эспиай, я им окучиваю и памятешки, и ацпшки, и кан-контроллеры, и генераторы и часики и в АВРках, и в ПИКах и в ЭЛЬПИСИШНИКАХ. Абзац что вы привели я знаю почти наизусть. ФИФО в моем коде упоминается потому, что я ВЗЯЛ РАБОТАЮЩИЙ ПРИМЕР ДЛЯ 2141(он работает на SSP) И ПОПЫТАЛСЯ ЗАСУНУТЬ ЕГО В 2104. НО В ПЕРВЫХ РЕВИЗИЯХ 2104 НЕБЫЛО SSP, ПОЭТОМУ драйверок SSP-2141 я переписал по смыслу и по опыту для SPI-2104. Функцию spi_send из моего драйвера я вам показал и сказал что в ней виснет иногда. Вся проблема в том что функция finit для меня черный ящик(она сидит в библиотеке) и я не могу знать что она должна делать и не могу посмотреть поэтому осцилом правильность хода её выполненияю. Поэтому я попросил совета у людей, делавших это. Раз вы сами признались что ни с одним из сабжей моего топика вы не работали - давайте не будем теоретизировать. Всего хорошего.
|
|
|
|
|
Sep 1 2009, 07:40
|

Профессионал
    
Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877

|
Цитата(Пал @ Aug 31 2009, 21:54)  Как же мне вам написать, чтобы вы меня поняли... Аккуратно выкинув неиспользуемый код из приведённого кусочка. И комментарии там не к месту  Прошу прощения, не заметил, что обращение к SSPSR закомментировано. Возможно, кто-то зачем-то читает SSP0DR. Не отладчик, случаем? Точно такой же код, как и Ваш, работает на 2134/2138 без нареканий.
--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
|
|
|
|
Сообщений в этой теме
Пал LPC2104 и RL-FlashFS Aug 29 2009, 09:33 DpInRock ЦитатаНа всяки случай - виснет здесь
К флэшке это ... Aug 30 2009, 19:45 esaulenka Не работал ни с 2104, ни с FlashFS, ничего не поня... Aug 31 2009, 07:26 Пал Цитата(esaulenka @ Aug 31 2009, 14:26) Не... Aug 31 2009, 09:21 DpInRock Цитатаfinit для меня черный ящик
Так и надо было т... Sep 1 2009, 12:22 esaulenka Скачал, полистал. Это где, простите?
S0SPSR - это... Sep 1 2009, 12:58 DpInRock Исходя из того, что в топике даже не попытались пр... Sep 1 2009, 14:26 Пал Цитата(DpInRock @ Sep 1 2009, 21:26) Исхо... Sep 2 2009, 08:47  toweroff Цитата(Пал @ Sep 2 2009, 12:47) "Вся... Sep 2 2009, 17:48
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|