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

Не знаю какие у вас там синяки, но я вроде ясно написал выше: повесьте хотя-бы светодиоды на все линии (CS, SCLK, MOSI, MISO) и по шагам отладьте.

Если уж и это непонятно, то и не знаю как ещё советовать.

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


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

Не знаю какие у вас там синяки, но я вроде ясно написал выше: повесьте хотя-бы светодиоды на все линии (CS, SCLK, MOSI, MISO) и по шагам отладьте.

Если уж и это непонятно, то и не знаю как ещё советовать.

 

Да понятно, чего тут может быть непонятного.Куплю подходящий контроллер и дожму эту озу.

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


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

Да понятно, чего тут может быть непонятного.Куплю подходящий контроллер и дожму эту озу.

 

Ну чтож, все оказалось просто.

Принцип следующий :

CS = 0

0х1

opcode (byte,page,sequential)

CS =1

---

CS = 0

0х2 ; запись

adr

adr

data

CS = 1

---====

 

CS = 0

0х3 ; чтение

adr

adr

8 impulses CLK ; на MISO появл data

CS = 1

 

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


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

Всем привет. Тоже начал знакомство с этой микросхемой на XMega128A1. Потыкал осциллографом при попытках чтения SPI и тактируется по CLK и данные идут из MOSI но ответа от чипа нет.

Вот код для SRAM.

/*Привязка к линиям микроконтроллера*/
#define SRAM_SPI SPIC //Регистр SPI
#define SRAM_PORT PORTC //PORT SPI
#define SRAM_CS_PORT PORTC //Доступ к чипу
#define SRAM_CS_PIN 3
#define SRAM_HOLD_PORT PORTC //Запрет записи
#define SRAM_HOLD_PIN 4
#define SRAM_MOSI_PORT PORTC //MOSI
#define SRAM_MOSI_PIN 5
#define SRAM_MISO_PORT PORTC //MISO
#define SRAM_MISO_PIN 6
#define SRAM_SCK_PORT PORTC //SCK
#define SRAM_SCK_PIN 7


void SRAM_Init(void){
    SRAM_SPI.DATA = 0;
    SRAM_PORT.DIR &= ~(1 << SRAM_MISO_PIN);
    SRAM_PORT.DIR |= (1 << SRAM_HOLD_PIN) | (1 << SRAM_MOSI_PIN) | (1 << SRAM_SCK_PIN) | (1 << SRAM_CS_PIN);
    SRAM_SPI.CTRL = SPI_ENABLE_bm | SPI_MASTER_bm | SPI_MODE_0_gc | SPI_PRESCALER_DIV128_gc;
    SRAM_HOLD_PORT.OUT |= (1 << SRAM_HOLD_PIN);
    SRAM_CS_PORT.OUT &= ~(1 << SRAM_CS_PIN);
    _delay_us(1);
    SRAM_SPI.DATA = 0x1;
    while(!(SPIC.STATUS & (1<<7)));
    SRAM_SPI.DATA = 0x0;
    while(!(SPIC.STATUS & (1<<7)));
    SRAM_CS_PORT.OUT |= (1 << SRAM_CS_PIN);
}
uint8_t SRAM_Write(uint16_t addr, uint8_t data){
    SRAM_CS_PORT.OUT &= ~(1 << SRAM_CS_PIN);
    _delay_us(1);
    SRAM_SPI.DATA = 0x2;
    while(!(SPIC.STATUS & (1<<7)));
    SRAM_SPI.DATA = addr >> 8;
    while(!(SPIC.STATUS & (1<<7)));
    SRAM_SPI.DATA = addr & 0xFF;
    while(!(SPIC.STATUS & (1<<7)));
    SRAM_SPI.DATA = data;
    while(!(SPIC.STATUS & (1<<7)));
    SRAM_CS_PORT.OUT |= (1 << SRAM_CS_PIN);
    return SPIC.DATA;
}
uint8_t SRAM_Read(uint16_t addr){
    SRAM_CS_PORT.OUT &= ~(1 << SRAM_CS_PIN);
    _delay_us(1);
    SRAM_SPI.DATA = 3;
    while(!(SPIC.STATUS & (1<<7)));
    SRAM_SPI.DATA = addr >> 8;
    while(!(SPIC.STATUS & (1<<7)));
    SRAM_SPI.DATA = addr & 0xFF;
    while(!(SPIC.STATUS & (1<<7)));
    SRAM_CS_PORT.OUT |= (1 << SRAM_CS_PIN);
    return SRAM_SPI.DATA;
    
}

 

Кто хорошо знаком с данным чипом, помогите пожалуйста.

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


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

Всем привет. Тоже начал знакомство с этой микросхемой на XMega128A1. Потыкал осциллографом при попытках чтения SPI и тактируется по CLK и данные идут из MOSI но ответа от чипа нет.

. . .

Кто хорошо знаком с данным чипом, помогите пожалуйста.

Юзал я давненько этот девайс но на на XMmega а на MSP430.

Оно как-то "завелось" сразу, даже и воспоминаний не осталось.

0. Проверьте аппаратную часть (разводка-подключение, обрывы и сопли, питание, отсутствие помех итд )

1. Проверьте что настройки SPI процессора (полярность и фаза) соотв-ют требуемым для 23k256

2. Возможно что причина - в некорректной работе приемника SPI процессора из-за настроек

или в софте драйвера, обеспечивающего работу узла SPI. Для начала отключите 23k256 от

SPI и соедините MOSI - MISO. Проверите и правильность "улета" и "прилета" по SPI.

3. Как ОНО работает - подробнейшим образом расписано выше.

 

ps - эти мс есть на разное питание. Проверьте соотв-ие.

 

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

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


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

Кто хорошо знаком с данным чипом, помогите пожалуйста.

 

 

ostroukhovio вы ввели два байта адреса для считывания, и не продолжили вводить третий байт (пустой), во время введения которого из озу исходит байт данных.

Адрес для теста лучше писать первый байт 0, второй (младший) - какой то до 10.Так проще.

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

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


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

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

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

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

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

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

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

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

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

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