|
LPC1768 + AT45DB с использованием SSP |
|
|
|
May 26 2012, 13:37
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-12-11
Пользователь №: 68 798

|
Добрый день, коллеги. Волею судьбы пришлось использовать ARM в разработке. Столкнулись с такой проблемой. Нужно связать LPC1768 и AT45DB321. Опыт работы с этой датафлеш есть предостаточный, но все на PIC. Так вот, в чем проблема. Если использовать модуль SPI, вопросов не возникает, рабочий код для PIC был портирован практически без изменений и работает. Все бы ничего, но скорость обмена не более 12МГц. Датафлеш позволяет обмениваться быстрее, что собственно и нужно. При использовании SSP возникают нюансы, а именно: включается буфер FIFO глубиной 8 слов. Пока он не заполнен до верху, получается, невозможно считать данные. Допустим, кто знаком с работой датафлеши, на запрос о статусе надо принять всего единственный байт. Невозможно его получить, пока 8 раз не запросишь. Это разве удобства? А если выполнить блочное чтение, значит, нужно читать на 8 байт больше, что бы считать на вершине буфера свой нужный последний? Или я чего-то не понимаю? Почему у модуля УАРТ можно указать глубину буфера Фифо, тут нельзя. Как дали, так и кушать? Может кто подскажет, как проще выкрутиться? Заранее спасибо.
|
|
|
|
|
 |
Ответов
|
May 26 2012, 16:20
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-12-11
Пользователь №: 68 798

|
Цитата(aaarrr @ May 26 2012, 19:07)  Это не так. Никто не заставляет заполнять FIFO полностью, можно и один байт получить-считать. Каким образом? Это и есть то, о чем я спрашиваю. Я кидаю команду чтения статуса. Вижу в SSP->DR принятый байт 0xFF, все правильно. Теперь кидаю байт 0xFF для тактирования ответного байта( в отличии от коллеги, я использую не 16 битовый формат, а 8 битовый), в ответ в SSP->DR я вижу отладчиком нужное значение статуса, но считвается оттуда 0. И так еще семь раз подряд. И только 8 вытолкнет нужное мне значение наружу, и я могу его считать. Так что именно неправильно?
|
|
|
|
|
May 26 2012, 16:45
|
Участник

Группа: Участник
Сообщений: 59
Регистрация: 11-12-11
Пользователь №: 68 798

|
У коллеги, кстати, тоже не так работает, как хотелось бы, а так как получается и у меня. Единственное, что спасает - тот кусок кода - "вечный" цикл. Через определенное количество чтений буфер таки заполняетя, как и ожидалось, и цикл вываливается наружу с "нужным" результатом. Цитата(aaarrr @ May 26 2012, 19:35)  Потому что отладчик уже считал этот статус. Имеет смысл убрать отладчик и проверить без его вмешательства? Ну может быть. Надо поробовать
|
|
|
|
Сообщений в этой теме
TAutomatic LPC1768 + AT45DB с использованием SSP May 26 2012, 13:37 jcxz Не очень понятно в чём проблема? Работаю именно с ... May 26 2012, 14:33 TAutomatic Ну мне кажется, я достаточно подробно описал, в ЧЕ... May 26 2012, 15:57  aaarrr Цитата(TAutomatic @ May 26 2012, 20:20) .... May 26 2012, 16:35   jcxz Цитата(TAutomatic @ May 26 2012, 22:45) У... May 26 2012, 17:25    TAutomatic Цитата(jcxz @ May 26 2012, 20:25) Это как... May 26 2012, 17:43 DmitryM Цитата(TAutomatic @ May 26 2012, 17:37) Д... May 27 2012, 06:22 _Артём_ Цитата(DmitryM @ May 27 2012, 09:22) А ка... May 27 2012, 06:26  DmitryM Цитата(_Артём_ @ May 27 2012, 10:26) Смыс... May 27 2012, 06:34 TAutomatic Цитата(DmitryM @ May 27 2012, 09:22) А ка... May 27 2012, 07:45 aaarrr 1. Нет ни малейшей необходимости заполнять FIFO по... May 27 2012, 08:32 _Артём_ Цитата(aaarrr @ May 27 2012, 11:32) 1. Не... May 27 2012, 08:47  TAutomatic Цитата(_Артём_ @ May 27 2012, 11:47) Точн... May 27 2012, 13:05   TAutomatic Всем спасибо, кто откликнулся. Дело действительно ... May 28 2012, 13:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|