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

Не пойму в чем проблема

диаграмма записи

image.thumb.png.0b65f4d0761235b728cc881a57b9d470.png

 

смотрю на Сигнал Тап - вроде все соответствует

flash_write.thumb.png.f6635c044c5056fb4b42ba21520efbcc.png

теперь чтение с того же адреса

flash_read.thumb.png.0fd87d337120d93c04bcd69d91286322.png

читаются нули. впрочем с других адресов тоже.

 

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

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


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

3 minutes ago, aaarrr said:

Перед записью стирали? Если стереть и не писать, читаются ли '1'?

так я читаю и другие адреса в которые не писал - по идее на DQ я должен видеть FFFF. или нужно стирать весь блок перед каждой записью?

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


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

Да, должны быть FFFF. Если этого не наблюдается, то надо сначала разбираться с чтением. Попробуйте сначала чтение ID выполнить.

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


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

1 hour ago, aaarrr said:

Да, должны быть FFFF. Если этого не наблюдается, то надо сначала разбираться с чтением. Попробуйте сначала чтение ID выполнить.

Что то у меня не то с чтением

image.thumb.png.4a0b083c75fe18d17977de96f4d79a4c.png

вроде все соблюдено, но на 4 цикде не появляется ID.

read_id.thumb.png.87ca5cb471ff13216376076c295baaf4.png

 

ааа. 4 цикл должен быть чтение а не запись. подкоректировал

read_id.thumb.png.5f2c3ee7c95f1b20341bd016ec4e11e5.png

все равно ID не читается.

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

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


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

1 минуту назад, aaarrr сказал:

Как нетрудно заметить, в даташите есть нечетные адреса и для 8 и для 16 бит.

Да, только тот самый DQ15-1 (или как там его) не используется. В результате реальный адрес для 16 бит есть даташит*2

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


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

18 minutes ago, toweroff said:

Да, только тот самый DQ15-1 (или как там его) не используется.

Используется, второй цикл: 0x2aa (x16) / 0x555 (x8), младший бит у 0x555 как раз и есть A-1.

Наверное, стоит просто сказать, что у ТС должна быть последовательность 0x555-0x2aa-0x555. Кстати, корректность

подключения адресов/данных следует внимательно проверить.

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


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

Насколько я помню свои пляски с NOR, в 16 бит нога А0 не использовалась вообще. Адрес тогда (при подключении хоста к МС NOR) начинался с A1 (т.е. A0 на A1 м/с)

Тогда да, всё по даташиту

И тайминги проверить (CS/WR)

Да.. Посмотрел старинный код -
 

#define		get_address(x)			(volatile unsigned long*)(((x&0x3000000)<<2)|(x&0x00FFFFFF) + NOR_FLASH_BASE)

*(get_address(NOR_FLASH_CS2 + (0x555<<2))) = wr_config.unlock0;
*(get_address(NOR_FLASH_CS2 + (0x2AA<<2))) = wr_config.unlock1;

вон оно чо, Михалыч...

0x3000000 - это адрес ESMC контроллера

UPD2

Да, 32 бита. Это смещение в схемотехнике к базовому адресу

Посмотрел в схеме - A0 и A1 используются вообще для других целей. Т.е. для 16 бит либо адрес двигать на 1 влево, либо 0 соединять с А1 NOR

UPD

Сорь, там всё было разведено под 32 бита.. я запутался. Надо схемотехнику смотреть, там CPLD ещё была. Но адрес точно сдвигается, как ни крути

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


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

Да, всё так. Только процессор как адресует? Как он физически выставляет адрес на шину при 16-битном доступе?

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


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

30 minutes ago, toweroff said:

Да, всё так. Только процессор как адресует? Как он физически выставляет адрес на шину при 16-битном доступе?

к шине  я подключаюсь паралельно

entity FLASH_CONT is
  generic 
  (
      SECTOR_ADDR_WIDTH : integer := 10;
	   OTHER_ADDR_WIDTH  : integer := 16
  );	
  port
  (
	   FLASH_CLK  : in  std_logic;
		FLASH_RST  : in  std_logic := '0';
		
		TRIG       : in  std_logic;
		COMMAND    : in  std_logic_vector(7 downto 0);
		
		DEBUG      : out  std_logic_vector(7 downto 0);
		READY        : out std_logic;
		
		SECT_ADDR  : in  std_logic_vector(15 downto 0);
		OTHER_ADDR : in  std_logic_vector(15 downto 0); 
		
		DATA_IN    : in  std_logic_vector(15 downto 0);
		DATA_OUT   : out std_logic_vector(15 downto 0);
		
		CEn        : out std_logic;
      OEn        : out std_logic;
      WEn        : out std_logic;
      BYTEn      : out std_logic;  --When BYTE# is LOW, the device is in x8 mode and when HIGH, the device is in x16 mode
      RESETn     : out std_logic;
      RY_BYn     : in  std_logic;
	  ADDR       : out std_logic_vector(SECTOR_ADDR_WIDTH+OTHER_ADDR_WIDTH-1 downto 0);
	  DQ         : inout  std_logic_vector(15 downto 0)
		
  );

end FLASH_CONT;

то есть физически ADDR подключен к EMIF_A25.A0:EMIF_A25.A25.

и выставляю адресс так

when ST_PROGRAM_1 =>  --program command 1st cycle
    OEn <= '1';
    CEn <= '0';
    WEn <= '0';
    ADDR(SECTOR_ADDR_WIDTH+OTHER_ADDR_WIDTH-1 downto 12) <= (others => '0');
	ADDR(11 downto 0) <= x"555";
	DQ <= x"00AA";

или

when ST_PROGRAM_7 => --4th cycle
    CEn <= '0';
    WEn <= '0';
    ADDR(SECTOR_ADDR_WIDTH+OTHER_ADDR_WIDTH-1 downto 0) <= SECT_ADDR(SECTOR_ADDR_WIDTH-1 downto 0) & OTHER_ADDR(OTHER_ADDR_WIDTH-1 downto 0);
    DQ <= DATA_IN;

в принципе Сигнал Тап показывает коректный адрес.

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

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


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

2 minutes ago, aaarrr said:

Это что?

шина данных - подключена к EMIF_A25.DQ0:EMIF_A25.DQ15 а DATA_IN - загрузочный регистр данных - данные кладутся в него а потом я их загружаю в DQ.

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

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


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

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

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

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

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

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

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

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

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

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