По данной пробелме создавал тему в другой ветке форума 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);
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_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));
}
{
return (sFLASH_SendByte(sFLASH_DUMMY_BYTE));
}
Вышеприведённые алгоритмы при получении данных не дают желаемый результат, если же читаю страницу в буфер и из буфера то всё нормальн, данные корректны:
Код
sFlash_ReadPageBuff1(2*528);
while((sFlash_StatusRegisterRead()>>7)!=0x01);
sFlash_ReadBuff1(BufInput1,528,0x00);
while((sFlash_StatusRegisterRead()>>7)!=0x01);
sFlash_ReadBuff1(BufInput1,528,0x00);