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

 
 
> Память M95-256, stm32f100+M95-256
Ekka
сообщение Apr 12 2016, 12:23
Сообщение #1


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

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



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

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

#define S GPIO_Pin_4
#define Port GPIOA
#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 RDSR()
{
Port->ODR|=W;
Port->ODR&=~S;
SPI_I2S_SendData(SPI1,0b00000101);
Port->ODR|=S;
}

int main(void)
{
SPI_Master_Conf();
RDSR();
while(1);
}


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

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


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

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_Low;
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);
NVIC_EnableIRQ(SPI1_IRQn);
SPI_Cmd(SPI1, ENABLE);
}

u32 answer=0;
void SPI1_IRQHandler()
{
if(SPI_I2S_GetITStatus(SPI1,SPI_I2S_IT_RXNE)==1)
{
SPI_I2S_ClearITPendingBit(SPI1,SPI_I2S_IT_RXNE);
answer=(u32)SPI_I2S_ReceiveData(SPI1);
}

}


Сообщение отредактировал Ekka - Apr 12 2016, 12:25
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
AHTOXA
сообщение Apr 12 2016, 15:15
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Не вижу включения тактирования AFIO. Это тактирование альтернативных функций. Нужно почти всегда.
Добавьте в начало что-то вроде
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Ekka
сообщение Apr 13 2016, 06:25
Сообщение #3


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

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Цитата(AHTOXA @ Apr 12 2016, 16:15) *
Не вижу включения тактирования AFIO. Это тактирование альтернативных функций. Нужно почти всегда.
Добавьте в начало что-то вроде
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);



Добавила. Но что-то не помогло. Где-то в другом косяк...
Go to the top of the page
 
+Quote Post
Ekka
сообщение Apr 13 2016, 08:08
Сообщение #4


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

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Могут ли быть мною опущены какие-то временные задержки? Возвращает то 5, то 255....
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Apr 13 2016, 09:15
Сообщение #5


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Вы вообще неправильно работаете с SPI.
SPI_I2S_SendData(); - просто записывает байт в регистр передатчика. После надо опрашивать статус, чтобы узнать, когда данные отправятся.
(Удобно ждать, когда взведётся бит RXNE).
Перед снятием CS надо подождать ещё немножко, потому что флаг RXNE может взводиться немного раньше, чем завершается передача байта.
Ногу MISO я конфигурирую не как PUSH-PULL, а как INPUT.
Прерывание пока уберите, сделайте просто опросом:

Код
unsigned char SpiRw(unsigned char out)
{
    SPI_I2S_SendData(SPI1,out);
    while (!(SPI_I2S_GetITStatus(SPI1,SPI_I2S_IT_RXNE));
    return SPI_I2S_ReceiveData(SPI1);;
}

void smallDelay()
{
    volatile int i;
    for (i = 0; i < 100; ++i) {}
}

unsigned char RDSR()
{
    unsigned char ret;
    Port->ODR|=W;
    Port->ODR&=~S;
    ret = SpiRw(0b00000101);
    smallDelay();
    Port->ODR|=S;
    return ret;
}



--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Ekka
сообщение Apr 13 2016, 11:28
Сообщение #6


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

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Хм... ща попробуем

Спасибо Вам за ответы)))

Вот думаю... может я неправильно подключила.... У меня память М95-256. Есть у нее вход-Q, выход - D, выбор чипа S, С- тактирование. согласно с принципами SPI, MOSI соединяю c Q, MISO - c D, CS - S, NSS - C... HOLD и W - настраиваю как выходы, кидаю на свободные пины.

Хм.... почему же на MISO мк висит единица, просто единица... 255 гонит и все тут. Хотя команда проходит
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Ekka   Память M95-256   Apr 12 2016, 12:23
|- - AHTOXA   Цитата(Ekka @ Apr 13 2016, 16:28) Хм.... ...   Apr 13 2016, 12:03
||- - Ekka   А так можно написать? #include <stm32f10x.h...   Apr 13 2016, 12:06
||- - AHTOXA   Цитата(Ekka @ Apr 13 2016, 17:06) unsigne...   Apr 13 2016, 12:25
||- - Ekka   если я убираю это. Цикл WHILE , который ждет, пока...   Apr 13 2016, 12:46
||- - AHTOXA   Цитата(Ekka @ Apr 13 2016, 17:46) если я ...   Apr 13 2016, 13:25
||- - Ekka   Спасибо за Ваши ответы))) Микросхема начала отвеча...   Apr 14 2016, 08:07
|- - Obam   Цитата(Ekka @ Apr 13 2016, 15:28) Хм... щ...   Apr 14 2016, 08:40
|- - Ekka   Цитата(Obam @ Apr 14 2016, 09:40) Разреши...   Apr 14 2016, 09:20
- - Obam   Кодом в меня тыкать не надо (: Смысл моего замеча...   Apr 14 2016, 09:28
|- - Ekka   Цитата(Obam @ Apr 14 2016, 10:28) Кодом в...   Apr 14 2016, 09:38
- - Obam   Хорошо, едем дальше… В п/п вам надо 2 раза знать ...   Apr 14 2016, 10:02
|- - Ekka   Спасибо за разъяснение, Obam, т.е. функция должна ...   Apr 14 2016, 10:16
|- - Obam   Цитата(Ekka @ Apr 14 2016, 14:16) Спасибо...   Apr 14 2016, 11:01
|- - Ekka   Да. Но с пониманием туго(   Apr 14 2016, 11:14
|- - Obam   Цитата(Ekka @ Apr 14 2016, 15:14) Да. Но ...   Apr 14 2016, 11:57
|- - Ekka   Цитата(Obam @ Apr 14 2016, 12:57) Так при...   Apr 14 2016, 12:42
|- - Obam   Цитата(Ekka @ Apr 14 2016, 16:42) Только ...   Apr 14 2016, 12:49
|- - Ekka   Нет... что-то не так. Микросхема не отвечает. Хотя...   Apr 14 2016, 13:05
|- - Obam   Цитата(Ekka @ Apr 14 2016, 17:05) Нет... ...   Apr 14 2016, 13:12
|- - Ekka   Такая штука... как только я использую ожидание фла...   Apr 14 2016, 13:16
- - Obam   Не нервничайте, спокойно читайте datasheet и RefMa...   Apr 14 2016, 13:35
|- - Ekka   Код#include <stm32f10x.h> #include <st...   Apr 15 2016, 07:24
|- - Ekka   возник др.вопрос. Чтобы считать что-нибудь из памя...   Apr 15 2016, 11:51
|- - Ekka   Вроде разобралась как принять байт из памяти. Нача...   Apr 15 2016, 13:18
|- - Ekka   Ребята, снова стучу в эту тему((( Недавно обнаружи...   May 17 2016, 07:41
- - Obam   Вот без обид: datasheet на память надо прочитать х...   May 17 2016, 07:45
|- - Ekka   Цитата(Obam @ May 17 2016, 07:45) Вот без...   May 17 2016, 07:49
- - Obam   Всё ж пояснил; в свой код гляньте: ф-ия READ и дал...   May 17 2016, 07:53
|- - Ekka   Так... у меня получается... SPI настроен на 8 бит....   May 17 2016, 08:00
- - Obam   Адрес в память в два приёма должен выдаваться.   May 17 2016, 08:01
|- - Ekka   вот же ж... попробуем   May 17 2016, 08:03
|- - Ekka   но ведь принимаю я 1 байт...так? Data out1 и Dat...   May 17 2016, 08:14
|- - Ekka   УРА)) УРА) УРА) надеюсб, не зря радуюсь хоть.... С...   May 17 2016, 08:45
|- - Ekka   Спасибо всем, кто помогал и тратил свои нервы и зн...   May 17 2016, 09:51
|- - Obam   Цитата(Ekka @ May 17 2016, 13:51) Все пол...   May 17 2016, 09:55
- - Obam   Вы бы взяли рисуночек со стр.23 datasheet-а и отме...   May 17 2016, 08:11
- - Obam   На колу мочало - начинаем сказку с начала: 1 (проп...   May 17 2016, 08:23
- - Obam   Вот здесь самое время остановиться и начать штудир...   May 17 2016, 08:58
|- - Ekka   такой нюанс "На колу мочало - начинаем сказк...   May 17 2016, 09:12
- - Obam   Фиктивные (ладно - пусть не фиктивные. Безсмысленн...   May 17 2016, 09:27


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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 13:40
Рейтинг@Mail.ru


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