Basilij 0 27 января, 2013 Опубликовано 27 января, 2013 · Жалоба Здравствуйте господа. Подскажите а чем сообственно координальным различаються три режима 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); Господа заранее благодарен за ваши потенциально возможные комментарии поданной проблеме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryM 0 28 января, 2013 Опубликовано 28 января, 2013 · Жалоба Здравствуйте господа. Подскажите а чем сообственно координальным различаються три режима 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Basilij 0 28 января, 2013 Опубликовано 28 января, 2013 (изменено) · Жалоба Количеством DUMMY_BYTES и ещё одним параметром это конечно. По предельно частоте также ограничение. Вопрос в различиях не на уровне параметров команд, а на уровне физическом. Я на данный момент не могу однозначно понять какую команду мне следует использовать чтобы в рамках этой команды производить исследования проблемы. Частоту SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; понижал до SPI_BaudRatePrescaler_8 (24/6 = 4 МГц) но эффекта не заметил, как начинаются сбойные байты примерно после 100 чтения байта, так и до конца чтения всех байт... может есть какое то ограничение по клоку при чтении напрямую из флеша в обход буфера? по даташиту всё вроде в норме, 33 и 66.. что же такое "Legacy Command"? Изменено 28 января, 2013 пользователем Basilij Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться