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

 
 
 
Reply to this topicStart new topic
> Вопрос по SSP микроконтроллера LPC1788
Iptash
сообщение Feb 9 2015, 19:02
Сообщение #1


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

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Здравствуйте все.
Разбираюсь с KIT SK-MLPC1788. На ней установлена дата флеш AT45DB021(serial) которая подключена к SSP_1 выводам и которая работает в SPI режиме. Например для записи данных на флешку ей надо код операции адрес и данные. Но режим SPI это один кадр состоящий от 4 до 16 бит. Или запись/чтение нужно производить чисто программным путем?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 10 2015, 03:24
Сообщение #2


Гуру
******

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



Кто-ж Вам мешает несколько раз выполнить запись этих от 4-х до 16-и?
Go to the top of the page
 
+Quote Post
Iptash
сообщение Feb 10 2015, 05:21
Сообщение #3


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

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Никто не мешает. Только судя по графикам работы флешки, запись всего кадра должна быть не прерывной. А у контроллера кадр 4-16 бит и заканчивается с переходом CS 0->1. Вопрос решил сконфигурировав выход CS контроллера в обычный I/O и управляя им как нужно.
Go to the top of the page
 
+Quote Post
megajohn
сообщение Feb 10 2015, 06:27
Сообщение #4


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

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



Цитата(Iptash @ Feb 10 2015, 08:21) *
Вопрос решил сконфигурировав выход CS контроллера в обычный I/O и управляя им как нужно.


Так и нужно. На одном SPI у вас может быть до фига устройств. И у каждого свой CS

я делал таблицу устройств и на каждое устройство свою callback-функцию на включение-выключение CS и получалость вполне красиво и гибко

псевдокод

struct device_table
{
{ at_25_id, at25_func_cs },
{ si4421_id, si4421_func_cs },
};


spi.open( device_table );
spi.cs_sel( at_25_id );
spi.write( "3245345" );
spi.read( buff );
spi.cs_unsel( at_25_id );

и т.п.


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post
Iptash
сообщение Feb 10 2015, 07:09
Сообщение #5


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

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Цитата(megajohn @ Feb 10 2015, 09:27) *
Так и нужно. На одном SPI у вас может быть до фига устройств. И у каждого свой CS...

Как говорится "Утро вечера мудренее". Утром проснулся и подумал, а почему бы не так..))
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 11 2015, 04:02
Сообщение #6


Гуру
******

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



Цитата(megajohn @ Feb 10 2015, 12:27) *
на каждое устройство свою callback-функцию на включение-выключение CS

Достаточно номер_порта << 5 | номер_пина
#define Pclr2(port, pin) (GPIO[port].CLR = 1U << (pin))
#define Pset2(port, pin) (GPIO[port].SET = 1U << (pin))
Go to the top of the page
 
+Quote Post
Iptash
сообщение Feb 13 2015, 08:16
Сообщение #7


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

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Почему то пин (CS) который сконфигурировал как обычный I/O, все равно при передачи оного байта устанавливается в 1. Пока не понял почему.
Go to the top of the page
 
+Quote Post
Iptash
сообщение Feb 13 2015, 17:19
Сообщение #8


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

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Все, разобрался. С указателями запутался))
Go to the top of the page
 
+Quote Post

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

 


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


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