Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.02.2010, 16:52
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
SPI в контроллере без интерфейса
Всем привет!
Есть микросхема с интерфейсом SPI.
Хочу получать от неё данные и обрабатывать их.
Контроллер РИС16Ф84А
Но ведь в нём этот интерфейс(да и вообще никакой) не реализованы.
Поэтому его нужно или самому писать или велосипед не изобретать, а обратиться сюда.
Может у кого уже есть готовые функции:
spi_setup
spi_data_is_in
spi_read
spi_write
Или как быть, не меняя МК ?
|
|
|
|
06.02.2010, 16:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Сообщение от yellow87
|
Всем привет! Есть микросхема с интерфейсом SPI. Хочу получать от неё данные и обрабатывать их.
Контроллер РИС16Ф84А
|
Даже если в МК есть модуль SPI, всё равно придётся писать програмную его поддержку.. сам по себе он не заработает.
И он проще чем I2C. Писать не так уж и много...
|
|
|
|
06.02.2010, 17:02
|
|
Заблокирован
Регистрация: 08.08.2007
Сообщений: 2,843
Сказал спасибо: 378
Сказали Спасибо 1,368 раз(а) в 746 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Сообщение от yellow87
|
Всем привет!
Есть микросхема с интерфейсом SPI.
Хочу получать от неё данные и обрабатывать их.
Контроллер РИС16Ф84А
Но ведь в нём этот интерфейс(да и вообще никакой) не реализованы.
Поэтому его нужно или самому писать или велосипед не изобретать, а обратиться сюда.
Может у кого уже есть готовые функции:
spi_setup
spi_data_is_in
spi_read
spi_write
Или как быть, не меняя МК ?
|
Реализовать програмно. Прочитать даташит на SPI. Сходить по ссылке:
http://www.gaw.ru/html.cgi/txt/interface/spi/index.htm
Если нет готового, делать самому или отказаться от этой затеи. SPI штука синхронная, поэтому можно делать на произвольной скорости.
|
|
|
|
06.02.2010, 17:17
|
|
Заблокирован
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Сообщение от yellow87
|
Есть микросхема с интерфейсом SPI.
|
Какая? Какие режимы SPI поддерживает?
Цитата:
|
Хочу получать от неё данные и обрабатывать их.
Контроллер РИС16Ф84А
|
Всё зависит от задачи обработки, если обработки много, то лучше взять с DMA, типа PIC18F46J11, PIC18F46J50 и т.д.
|
|
|
|
06.02.2010, 18:39
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
1. Я уже давно читал ту страницу. (ссылка на описание)
2. Обработки - минимум.
3. Микросхема без разницы какая: поддерживает все режимы SPI
4. Я и так насроился писать сам, а не менять МК.
5. А вот чтоб не писать самому, я и прошу готовый код инициализации, чтения и записи.
---------------------------------
Если у кого есть готовый модуль функций, пожалуйста поделитесь
: - )
|
|
|
|
06.02.2010, 18:44
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Код:
|
// описываем выходы
#define cs 0
#define clk 1
#define data 2
//описываем входы
#define doo RA3
#define mmc_dis() BITSET(porta,cs); PORTA=porta;
#define mmc_en() BITCLR(porta,cs); PORTA=porta;
#define d_1() BITSET(PORTA,data);
#define d_0() BITCLR(PORTA,data);
#define clk_1() BITSET(PORTA,clk);
#define clk_0() BITCLR(PORTA,clk);
void mmc_write_byte (unsigned char Byte1)
{
unsigned char mask=0x80;
do {
if ((Byte1&mask))
{
d_1(); //Set Output High
}
else
{
d_0(); //Set Output Low
}
clk_0();
mask ›› =1;
clk_1();
}while (mask != 0);
d_1();
}
//-------------------------------------------
unsigned char mmc_read_byte (void)
{
unsigned char Byte = 0;
unsigned char mask=0x80;
do {
clk_0();
if (doo)
{
Byte+=mask;
}
clk_1();
mask››=1;
} while (mask!=0);
return (Byte);
} |
Последний раз редактировалось urry; 06.02.2010 в 18:54.
|
|
|
|
06.02.2010, 18:49
|
|
Прописка
Регистрация: 12.05.2009
Сообщений: 232
Сказал спасибо: 56
Сказали Спасибо 43 раз(а) в 35 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Обычно микросхемы с SPI не в режиме master. Т.е. ты задаёшь (читай контроллер) тактовую частоту (импульсы). Тактовую частоту лучше генератором не делать (это вообще может быть не частота,а произвольный момент времени перехода уровня сигнала (если микросхема-slave позволяет)), просто поднимаешь или опускаешь сигнал на выводе контроллера. А в промежутках тактовых импульсов читаешь бит-сигнал от slave-микросхемы. Это я объяснил 2 сигнала SPI. А третьим ещё проще))) Тупо на время обращения к slave микросхеме опускаешь уровень в ноль и всё. А когда закончил читать данные и микросхема-slave уже не нужна, поднимаешь уровень в верх. Вот тебе и алгоритм работы с трёх выводным SPI (такой SPI самый применяемый).
|
|
|
|
06.02.2010, 18:54
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Спасибо, urry.
А как же прерывание на поступление новых данных организовать?
Неужели mmc_read_byte в while(1) затолкать?
P.S.
А что это за абревиатуры такие:doo, mmc ?
|
|
|
|
06.02.2010, 19:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
в режиме мастера сам выбираешь, когда читать данные, прерывание не используется. А аббревиатура - ммс - это я с карточки этим читал
|
|
|
|
06.02.2010, 19:11
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
А, ну да, точно!
(Хочу каждую секунду буду читать, хочу каждую минуту)
Я ещё не до конца понял эту систему. Точнее только начал знакомиться.
Поэтому не понял "алгоритм работы с трёх выводным SPI"
Ну вроде для начала хватит. Буду пробовать
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:23.
|
|