реклама на сайте
подробности

 
 
> STM32F100 + AT35DB161 + Continuous Array Read, Байты считываються с ошибкой..
Basilij
сообщение Jan 28 2013, 11:25
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 175
Регистрация: 7-04-11
Пользователь №: 64 190



Господа.
По данной пробелме создавал тему в другой ветке форума http://electronix.ru/forum/index.php?showtopic=109847
Но незнаю даже верно ли там создал... но так как проблема возможно связана и с STM23 то продублирую сюда суть проблемы:
Подскажите а чем сообственно координальным различаються три режима 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);
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
prottoss
сообщение Jan 28 2013, 13:55
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Basilij @ Jan 28 2013, 17:25) *
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();
                 ...
     }
Не понял. На сколько я понимаю (и у меня это работает) команда "Continuous Array Read" считывает данные начиная с любого адреса. Номер страницы здесь вообще не при чем. Вот мой вариант функции:
Код
/*******************************************************************************
Read data from AT45
*******************************************************************************/
void AT45DB_Read(UINT32 addr, P_UINT8 data, UINT16 len)
{    
    IDF_CS_ON();
    IDF_TxByte(AT45DB_CMD_CONT_ARRAY_READ_LF);    /* 0x03 */
    IDF_TxByte(LOBYTE(HIWORD(addr)));
    IDF_TxByte(HIBYTE(LOWORD(addr)));
    IDF_TxByte(LOBYTE(LOWORD(addr)));
    IDF_RxData(data, len);
    IDF_CS_OFF();
}


--------------------
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 23:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01384 секунд с 7
ELECTRONIX ©2004-2016