Перейти к содержанию
    

не могу понять как считывать и записывать данные в эту озу.

даташит читаю - и ни х. не понимаю.

Если не тяжело растолкуйте.

пытаюсь так:

send data 2;

while(усл);

send data adr; //0

while (усл);

send data data;

while (flag);

вообще не могу догнать правильно или нет,блуждаю как ежик в тумане.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что непонятного? Настраивается регистр с режимом работы, потом команда, за ней - данные. Как данные будут следовать - настроили в регистре. Все.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хорошо,попробую.Непонятно, если я запишу 10 байт, то как их считать?В даташите написано: команда 3;2 байта адр;и дальше читаем данные.Как читаются данные - непонятен принцип действия.Вроде мастер должен чтото запихивать чтобы чтото получить от РАМки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хорошо,попробую.Непонятно, если я запишу 10 байт, то как их считать?В даташите написано: команда 3;2 байта адр;и дальше читаем данные.Как читаются данные - непонятен принцип действия.Вроде мастер должен чтото запихивать чтобы чтото получить от РАМки?

общий алгоритм такой

void Write(uint32_t address, uint32_t lenght, uint8_t *buffer)
{
      // Note!!!Every write operation demands a write enable!!!
    //SPI_CSlow();
    //SPI_SendByte(SPIEEPROM_CMD_WREN);
    //SPI_CShigh();

    // start write
    SPI_CSlow();
    // send write command
    SPI_SendByte(SPIEEPROM_CMD_WRITE);
    // send address
    SPI_SendByte(address>>8);
    SPI_SendByte(address&0x00FF);
    while(lenght--)
    {
        // send data to be written
         SPI_SendByte(*buffer++);
    }
    // stop write
    SPI_CShigh();
}

void Read(uint32_t address, uint32_t lenght, uint8_t *buffer)
{
    if(lenght>PAGE_SIZE)
        return 0;
    uint32_t data;
    // start read
    SPI_CSlow();
    // send command
    SPI_SendByte(SPIEEPROM_CMD_READ);
    // send address
    SPI_SendByte(address>>8);
    SPI_SendByte(address&0x00FF);
    // read contents of memory address
    while(lenght--)
    {
        data = SPI_TransferByte(0x00); 
        *buffer++ = data;
    }
    // stop read
    SPI_CShigh();
}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не получается,чтото упускаю.Пишу на кокосе,там таких функций нет.Мне нужно понять порядок действий.

пишу так, упрощенно :

spi1->DR=1; //write status reg

while (flag);

...=0x41; // hold off,max size data

//-----

 

...=2; // write

wh();

...=0; //adr

wh();

...=0; //adr

wh();

...= data;

wh();

//----

...=3; //read

wh();

...=0; // adr

wh();

...=0; // adr

wh();

data = spi1->DR;

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не получается,чтото упускаю.Пишу на кокосе,там таких функций нет.Мне нужно понять порядок действий.

Неужели? А что такое "кокос? Орех такой?

Если имеется в виду движок Cocos, так он, вроде, базируется на С++, нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Неужели? А что такое "кокос? Орех такой?

Если имеется в виду движок Cocos, так он, вроде, базируется на С++, нет?

 

Да кокос он и среди орехов CooCox.Других кокосов в stm32 нету.

 

Лучше помогите понять алгоритм действий.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не надо "писать на кокосе".

Надо по-человечески, отделяя мух от котлет.

 

Предлагаю организовать интерфейс с шиной SPI:

- активация слейва

- деактивация слейва

- обмен одним байтом (чтение/запись)

 

Для удобства можно организовать дополнительно:

- запись байта (вызов функции обмена, считанный байт "забыть")

- чтение байта (вызов функции обмена, записать ноль).

 

Собственно, этот программный интерфейс "сам" рождается после изучения любой статьи, найденной в гугле по запросу "шина spi описание".

 

 

А только потом из этого сооружать обмен с конкретной микросхемой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не надо "писать на кокосе".

Надо по-человечески, отделяя мух от котлет.

 

Эх, любите вы умники к мелочам придираться.Да, правильно написать В СооСох-е.

А озу как уперлась так и продолжает сопротивляться.

С передачей данных из модуля spi проблем нет, данные уходят.Вот только не приходят из озу.Ножки входа и выходов настроены.

Надо чтото попроще погонять, датчики наверное.Там опыта наберусь, осилю и озу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

[Надо чтото попроще погонять, датчики наверное.Там опыта наберусь, осилю и озу.

Что такое "сигнал CS" знаете? :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что такое "сигнал CS" знаете? :rolleyes:

 

Что такое чип селект я знаю, как он относится к озу я знаю.

Если можете, подскажите что делать с выводом HOLD для нормальной работы, и как правильно настроить регистр конфигурации в озу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что такое чип селект я знаю, как он относится к озу я знаю.

Если можете, подскажите что делать с выводом HOLD для нормальной работы, и как правильно настроить регистр конфигурации в озу.

HOLD и WP посадите на VCC.

регистр конфигурации трогать не надо.

Изменено пользователем Jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ааа.Эта полный трэшшшщь.Уже и сниффер сваял для проверки линий, и статей перечитал и осталось шаг за шагом вычистить ошибки ... и плата дискавери здохла.Ну надо ж такое.

Всем кто реально помогал спасибо человеческое.Буду думать что дальше делать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что такое чип селект я знаю, как он относится к озу я знаю.

Сами сигналы смотрели (осциллограф, лог.анализатор)? Может у вас там по выходу ничего не шевелится.

Если ни того ни другого нет, можно и светодиодами: делаете программный SPI и по шагам.... (так как SPI во всех таких микросхемах полностью статический).

Сверяете с осциллограммами в даташите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

 

Осцилограф есть эл-лучевой ещё советский или около того, как им смотреть протокол - без понятия, уровни меняются сигналы какието проходят,но развертки линий во времени просмотреть нереально.Програмно собирался сделать, если через модуль ничего не будет получаться.Как получить развертку на компе - не нашел подходящих вариантов.Есть анализатор для LPT порта от Валерия Ковтуна, но у меня сигналы на развертке рисовались искаженными, а то и вовсе не фиксировались.Вроде он подходит для медленных процессов.

Насчет CS, если вариант hard, то со шлейфом 20 см spi зависает намертво в первом же цикле ожидания опустошения флага.В начале отправки данных, перед строкой с send data включаю синяка(PC8), и по окончанию while (flag) выключаю его.Если провода на CS выводе нет, то синяк выдает едва заметный блик, правда DIV_128, если провод подцепить синяк светит ярко.

Вместо CS(оставил висеть в воздухе) задействовал соседний PC4 с соотв уровнями 0 и 1 когда надо.Со шлейфом так spi не виснет и данные выдаются.Со сниффером успел проверить линию CLK,счетчик четко фиксирует приход 8 импульов, или 16 если перем data объявил 16 битной.Также через rlf на др входе и прер по нужным фронтам от CLK собрался проверить что передается по линиям mosi и miso, но плата накрылась.В идеале было бы хорошо смотреть развертку линий на компе и иметь программу симуляторов протоколов с возможностью взаимодействовать с контроллерами, но эта фонтастик.Вот такие пироги.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...