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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> 23k256, как использовать эту ram
jukebox
сообщение Apr 6 2015, 07:20
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-03-15
Пользователь №: 85 618



не могу понять как считывать и записывать данные в эту озу.
даташит читаю - и ни х. не понимаю.
Если не тяжело растолкуйте.
пытаюсь так:
send data 2;
while(усл);
send data adr; //0
while (усл);
send data data;
while (flag);
вообще не могу догнать правильно или нет,блуждаю как ежик в тумане.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Apr 6 2015, 16:20
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



А что непонятного? Настраивается регистр с режимом работы, потом команда, за ней - данные. Как данные будут следовать - настроили в регистре. Все.
Go to the top of the page
 
+Quote Post
jukebox
сообщение Apr 7 2015, 04:52
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-03-15
Пользователь №: 85 618



хорошо,попробую.Непонятно, если я запишу 10 байт, то как их считать?В даташите написано: команда 3;2 байта адр;и дальше читаем данные.Как читаются данные - непонятен принцип действия.Вроде мастер должен чтото запихивать чтобы чтото получить от РАМки?
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Apr 7 2015, 06:07
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(jukebox @ Apr 7 2015, 09:52) *
хорошо,попробую.Непонятно, если я запишу 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();
}

Go to the top of the page
 
+Quote Post
jukebox
сообщение Apr 7 2015, 08:51
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-03-15
Пользователь №: 85 618



не получается,чтото упускаю.Пишу на кокосе,там таких функций нет.Мне нужно понять порядок действий.
пишу так, упрощенно :
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;

Go to the top of the page
 
+Quote Post
Herz
сообщение Apr 7 2015, 09:25
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(jukebox @ Apr 7 2015, 11:51) *
не получается,чтото упускаю.Пишу на кокосе,там таких функций нет.Мне нужно понять порядок действий.

Неужели? А что такое "кокос? Орех такой?
Если имеется в виду движок Cocos, так он, вроде, базируется на С++, нет?
Go to the top of the page
 
+Quote Post
jukebox
сообщение Apr 7 2015, 09:52
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-03-15
Пользователь №: 85 618



Цитата(Herz @ Apr 7 2015, 09:25) *
Неужели? А что такое "кокос? Орех такой?
Если имеется в виду движок Cocos, так он, вроде, базируется на С++, нет?


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

Лучше помогите понять алгоритм действий.
Go to the top of the page
 
+Quote Post
esaulenka
сообщение Apr 10 2015, 09:35
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 032
Регистрация: 13-03-08
Из: Маськва
Пользователь №: 35 877



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

Предлагаю организовать интерфейс с шиной SPI:
- активация слейва
- деактивация слейва
- обмен одним байтом (чтение/запись)

Для удобства можно организовать дополнительно:
- запись байта (вызов функции обмена, считанный байт "забыть")
- чтение байта (вызов функции обмена, записать ноль).

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


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


--------------------
Тут обсуждается творческий порыв, а не соответствие каким-либо стандартам ©
Go to the top of the page
 
+Quote Post
jukebox
сообщение Apr 12 2015, 06:35
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-03-15
Пользователь №: 85 618



Цитата(esaulenka @ Apr 10 2015, 09:35) *
Не надо "писать на кокосе".
Надо по-человечески, отделяя мух от котлет.


Эх, любите вы умники к мелочам придираться.Да, правильно написать В СооСох-е.
А озу как уперлась так и продолжает сопротивляться.
С передачей данных из модуля spi проблем нет, данные уходят.Вот только не приходят из озу.Ножки входа и выходов настроены.
Надо чтото попроще погонять, датчики наверное.Там опыта наберусь, осилю и озу.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 12 2015, 15:32
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(jukebox @ Apr 12 2015, 12:35) *
[Надо чтото попроще погонять, датчики наверное.Там опыта наберусь, осилю и озу.

Что такое "сигнал CS" знаете? rolleyes.gif
Go to the top of the page
 
+Quote Post
jukebox
сообщение Apr 13 2015, 05:57
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-03-15
Пользователь №: 85 618



Цитата(jcxz @ Apr 12 2015, 15:32) *
Что такое "сигнал CS" знаете? rolleyes.gif


Что такое чип селект я знаю, как он относится к озу я знаю.
Если можете, подскажите что делать с выводом HOLD для нормальной работы, и как правильно настроить регистр конфигурации в озу.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Apr 14 2015, 05:19
Сообщение #12


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(jukebox @ Apr 13 2015, 11:57) *
Что такое чип селект я знаю, как он относится к озу я знаю.
Если можете, подскажите что делать с выводом HOLD для нормальной работы, и как правильно настроить регистр конфигурации в озу.

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

Сообщение отредактировал Jenya7 - Apr 14 2015, 05:23
Go to the top of the page
 
+Quote Post
jukebox
сообщение Apr 14 2015, 08:39
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-03-15
Пользователь №: 85 618



Ааа.Эта полный трэшшшщь.Уже и сниффер сваял для проверки линий, и статей перечитал и осталось шаг за шагом вычистить ошибки ... и плата дискавери здохла.Ну надо ж такое.
Всем кто реально помогал спасибо человеческое.Буду думать что дальше делать.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 14 2015, 15:37
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(jukebox @ Apr 13 2015, 11:57) *
Что такое чип селект я знаю, как он относится к озу я знаю.

Сами сигналы смотрели (осциллограф, лог.анализатор)? Может у вас там по выходу ничего не шевелится.
Если ни того ни другого нет, можно и светодиодами: делаете программный SPI и по шагам.... (так как SPI во всех таких микросхемах полностью статический).
Сверяете с осциллограммами в даташите.
Go to the top of the page
 
+Quote Post
jukebox
сообщение Apr 14 2015, 18:59
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 12-03-15
Пользователь №: 85 618





Осцилограф есть эл-лучевой ещё советский или около того, как им смотреть протокол - без понятия, уровни меняются сигналы какието проходят,но развертки линий во времени просмотреть нереально.Програмно собирался сделать, если через модуль ничего не будет получаться.Как получить развертку на компе - не нашел подходящих вариантов.Есть анализатор для 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, но плата накрылась.В идеале было бы хорошо смотреть развертку линий на компе и иметь программу симуляторов протоколов с возможностью взаимодействовать с контроллерами, но эта фонтастик.Вот такие пироги.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 15:16
Рейтинг@Mail.ru


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