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

AT45DB161D + Continuous Array Read

Здравствуйте господа.

 

Подскажите а чем сообственно координальным различаються три режима Continuous Array Read, в даташите их описано три:

Continuous Array Read (Legacy Command: E8H): Up to 66 MHz;

Continuous Array Read (High Frequency Mode: 0BH): Up to 66 MHz;

Continuous Array Read (Low Frequency Mode: 03H): Up to 33 MHz.

 

Пробовал все три, данные читаются некорректные.

МК STM32F100C4, работает на 24 МГц. При чтении посредством буфера всё нормально и запичь и чтение. Ошибка только с тремя вышеприведёнными командами.

Инициализация:

SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; 
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;
  SPI_Init(sFLASH_SPI, &SPI_InitStructure);
  SPI_Cmd(sFLASH_SPI, ENABLE);

 

Cчитывание данных:

sFLASH_CS_LOW();
    sFLASH_SendByte(0x0B);
    sFLASH_SendByte((char)(addr_page>>6));
    sFLASH_SendByte((char)(addr_page<<2));
    sFLASH_SendByte(0x00);    
    sFLASH_SendByte(sFLASH_DUMMY_BYTE);/0xAA
        while(1)
    {
        DACData_16bit_H = sFLASH_ReadByte();
                ...
    }

 

Функция sFLASH_ReadByte():

uint8_t sFLASH_ReadByte(void)
{
  return (sFLASH_SendByte(sFLASH_DUMMY_BYTE));
}

Вышеприведённые алгоритмы при получении данных не дают желаемый результат, если же читаю страницу в буфер и из буфера то всё нормальн, данные корректны:

sFlash_ReadPageBuff1(2*528);
while((sFlash_StatusRegisterRead()>>7)!=0x01);
sFlash_ReadBuff1(BufInput1,528,0x00);

 

 

Господа заранее благодарен за ваши потенциально возможные комментарии поданной проблеме.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте господа.

 

Подскажите а чем сообственно координальным различаються три режима Continuous Array Read, в даташите их описано три:

Continuous Array Read (Legacy Command: E8H): Up to 66 MHz;

Continuous Array Read (High Frequency Mode: 0BH): Up to 66 MHz;

Continuous Array Read (Low Frequency Mode: 03H): Up to 33 MHz.

Ну хотя бы количеством DUMMY_BYTES.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Количеством DUMMY_BYTES и ещё одним параметром это конечно. По предельно частоте также ограничение.

Вопрос в различиях не на уровне параметров команд, а на уровне физическом. Я на данный момент не могу однозначно понять какую команду мне следует использовать чтобы в рамках этой команды производить исследования проблемы.

Частоту SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; понижал до SPI_BaudRatePrescaler_8 (24/6 = 4 МГц) но эффекта не заметил, как начинаются сбойные байты примерно после 100 чтения байта, так и до конца чтения всех байт... может есть какое то ограничение по клоку при чтении напрямую из флеша в обход буфера? по даташиту всё вроде в норме, 33 и 66.. что же такое "Legacy Command"?

Изменено пользователем Basilij

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...