|
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, 15:57
|
Участник

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

|
Ну мне кажется, я достаточно подробно описал, в ЧЕМ проблема. Но все равно спасибо, за ответ. Впрочем, я не проверял работоспособность Вашего кода. Там есть кое-какие отсутствующие куски, что бы просто скопировать и попробовать у себя. Но на взгляд, у меня вызывает вопрос строчка кода Код if ((i = ssp->DR) & B7) break; Мне все абсолютно ясно в ней, поскольку используем, как я уже сказал, AT45DB321 в проектах на PIC16, PIC18, PIC24 без всяких трудностей. Но у меня она не дает сразу нужного результата, пока я не выполню чтение 8 раз, тоесть пока самый первый байт не окажется на вершине буфера FIFO. Как у Вас так просто получается, надо разобраться. Кстати, при использовании DMA допускаю, что работает как раз все предсказуемо, поскольку модули DMA не используют буферы FIFO периферии, а читают сразу из входных регтсров.
|
|
|
|
Сообщений в этой теме
TAutomatic LPC1768 + AT45DB с использованием SSP May 26 2012, 13:37 aaarrr Цитата(TAutomatic @ May 26 2012, 17:37) Д... May 26 2012, 16:07 TAutomatic Цитата(aaarrr @ May 26 2012, 19:07) Это н... May 26 2012, 16:20  aaarrr Цитата(TAutomatic @ May 26 2012, 20:20) .... May 26 2012, 16:35  TAutomatic У коллеги, кстати, тоже не так работает, как хотел... May 26 2012, 16:45   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
|
|
|