STM32f100+M95-256 Работа с памятью

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Ekka
Родился
Сообщения: 2
Зарегистрирован: Ср апр 13, 2016 13:24:37

STM32f100+M95-256 Работа с памятью

Сообщение Ekka »

Доброго времени суток. Битый час бьюсь с памятью М95-256. Работает на SPI. МК - stm32f100. Не пойму, почему ответ от схемы памяти приходит тупо 255...255... держится единица. Может, кто-нибудь работал с этой зверь-машиной и подскажет, где может быть косяк.

#include <stm32f10x.h>
#include <stm32f10x_gpio.h>
#include <stm32f10x_rcc.h>
#include <stm32f10x_spi.h>
#include <misc.h>

#define Port GPIOA //Основной порт
#define S GPIO_Pin_4 //Выбор чипа
#define D GPIO_Pin_7 //Вход(куда приходят данные)
#define Q GPIO_Pin_6 //Выход(откуда уходят данные)
#define C GPIO_Pin_5 //Сигналы синхронизации (таймер тактирования)
#define W GPIO_Pin_2 //Защита от записи
#define HOLD GPIO_Pin_3 //Удержание устройства (останов без сброса)

void SPI_Master_Conf();
void delay(int volatile ms);
void WRITE(u16 adress, u8 data);
void READ(u16 adress);
void WREN();
void WRDI();
unsigned char RDSR();
int answer=0;
int main(void)
{
SPI_Master_Conf();

while(1){
answer=RDSR();
}
}

unsigned char RDSR()
{
Port->ODR&=~S;
SPI_I2S_SendData(SPI1,0x05);
delay(100);
Port->ODR|=S;
while(!(SPI_I2S_GetITStatus(SPI1,SPI_I2S_IT_RXNE)));
return SPI_I2S_ReceiveData(SPI1);
}

void SPI_Master_Conf()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

GPIO_InitTypeDef port;
port.GPIO_Mode = GPIO_Mode_AF_PP;
port.GPIO_Pin = C|D;
port.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(Port, &port);


GPIO_InitTypeDef port1;
port1.GPIO_Mode = GPIO_Mode_Out_PP;
port1.GPIO_Pin =S|W|HOLD;
port1.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(Port, &port1);

GPIO_InitTypeDef port2;
port2.GPIO_Mode = GPIO_Mode_IPU;
port2.GPIO_Pin =Q;
port2.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(Port, &port2);

Port->ODR|=S;
Port->ODR&=~(HOLD|W);

SPI_InitTypeDef spi;
SPI_StructInit(&spi);
spi.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
spi.SPI_Mode = SPI_Mode_Master;
spi.SPI_DataSize = SPI_DataSize_8b;
spi.SPI_CPOL = SPI_CPOL_High;
spi.SPI_CPHA = SPI_CPHA_2Edge;
spi.SPI_NSS = SPI_NSS_Soft;
spi.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
spi.SPI_FirstBit = SPI_FirstBit_MSB;
spi.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &spi);
SPI_I2S_ITConfig(SPI1, SPI_I2S_IT_RXNE, ENABLE);
SPI_I2S_ClearITPendingBit(SPI1,SPI_I2S_IT_RXNE);
SPI_Cmd(SPI1, ENABLE);
}
Реклама
Ekka
Родился
Сообщения: 2
Зарегистрирован: Ср апр 13, 2016 13:24:37

Re: STM32f100+M95-256 Работа с памятью

Сообщение Ekka »

Другой косяк... считывается тупо то, что отправлялось(
Реклама
Ответить

Вернуться в «Разные вопросы по МК»