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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Чтение STM32 из M25P64 по SPI при участии DMA, Как это правильно организовать?
Genadi Zawidowsk...
сообщение Feb 3 2012, 05:33
Сообщение #16


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

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(Valentin-k @ Feb 3 2012, 09:12) *
я провожу очистку сектора.но тут дело даже не в защитных битах-запись просто через spi проходит нормально,и чтение этой записи через dma успешное,массивы совпадают,а вот запись через dma-нет...

При чтении по DMA обеспечиваете выдачу 0xff по SPI? Я программировал вывод процессора на выдачу 1 в таком случае.

Сообщение отредактировал Genadi Zawidowski - Feb 3 2012, 05:34
Go to the top of the page
 
+Quote Post
Valentin-k
сообщение Feb 3 2012, 05:41
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 27-01-12
Пользователь №: 69 923



я нули шлю,при чтении нужно тактирование делать,нулями и делаю. массив buffSPI_Tx у меня нулевой,только в его нулевой элемент записываю команду на чтение READ,а три следующие адрес,в данном случае нулевой.далее указываю буффер приема и передачи и включаю два канала...
по завершению передачи в buffSPI_Rx я имею страницу считанную из флеша(за исключением последних 4 байт,но это мелочь,буффер увеличить на 4 и всю страницу получу или както по другому-это не важно)-это все работает!проблема с записью...чую где то глупый косяк,да опыта мало еще с 32-х разрядными

Сообщение отредактировал Valentin-k - Feb 3 2012, 05:46
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Feb 3 2012, 08:44
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(Valentin-k @ Feb 3 2012, 08:41) *
проблема с записью...чую где то глупый косяк,да опыта мало еще с 32-х разрядными

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

The Write Enable Latch (WEL) bit must be set prior to every Page Program (PP), Sector Erase (SE), Bulk Erase (BE) and Write Status Register (WRSR) instruction.
Go to the top of the page
 
+Quote Post
Valentin-k
сообщение Feb 3 2012, 08:49
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 27-01-12
Пользователь №: 69 923



про команду я знаю и сейчас уже локализовался - по dma эта команда не идет...не ставится бит...и не могу понять почему.в даташите про времена ничего не сказано,а подаю ее так же как и просто через spi писал.
по обычным функциям стандартной библиотеки spi все пишется
Go to the top of the page
 
+Quote Post
011119xx
сообщение Feb 6 2012, 05:03
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 381
Регистрация: 5-07-05
Из: Уфа
Пользователь №: 6 544



А канал DMA перестраивается или нет при попытке установить этот бит ?
Go to the top of the page
 
+Quote Post
Valentin-k
сообщение Feb 6 2012, 20:22
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 27-01-12
Пользователь №: 69 923



в каком смысле перестраивается?
я с битом разобрался, он стал ставится когда я отдельно начал слать команду на разрешение записи:
buffSPI_Tx[0]=WREN;
SPI_FLASH_CS_LOW();
TX_DMA_SPI();
SPI_FLASH_CS_HIGH();

а тут уже запрос на регистр статуса
аналогично
buffSPI_Tx[0]=код команды запроса;
DMA2_Channel1->CNDTR = 3;
DMA2_Channel2->CNDTR = 3;
SPI_FLASH_CS_LOW();
TX_DMA_SPI();
SPI_FLASH_CS_HIGH();
и в ответ получаю заветную 0х02 - как раз 1-ка в том бите
но потом:
buffSPI_Tx[0]=WRITE;
buffSPI_Tx[1]=0x00;
buffSPI_Tx[2]=0x00;
buffSPI_Tx[3]=0x00;
DMA2_Channel1->CNDTR = 256;
DMA2_Channel2->CNDTR = 256;
SPI_FLASH_CS_LOW();
TX_DMA_SPI();
SPI_FLASH_CS_HIGH();
и записи нет((((
на осциллографе всю передачу вижу
Go to the top of the page
 
+Quote Post
Valentin-k
сообщение Feb 7 2012, 07:34
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 27-01-12
Пользователь №: 69 923



а может дело в флагах которые ставит дма,а я не сбрасываю?
Go to the top of the page
 
+Quote Post
smalcom
сообщение Feb 25 2012, 08:17
Сообщение #23


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

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Плохо смотрю или Valentin-k действительно не проверяет WriteInProgress бит?
Go to the top of the page
 
+Quote Post

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

 


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


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