Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 25.03.2017, 09:40   #1
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,286
Вес репутации: 4442/101
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию SPI режим мастер + frame

PIC24H никак не могу настроить режим SPI 16 бит master + frame. Нужно чтобы МК отсылая слово 16 бит снабжал бы ногой SS отмашку этого слова для slave которому это SS должно на CS быть подключено.
Или я чего-то не того хочу что есть в проце? У меня ни при каких обстоятельствах нога SS не включается на выход даже, не то что махнуть ею.

Если не пытаться использовать frame режим, а махать ногой программно подождав когда слово выбежит - тогда свзяка МК- MCP4822 работают правильно. Но у меня по времени жестко выходит, хотелось бы чтобы SS аппаратно отрабатывал.
Код:
//PIC24HJ128GP204
#define TRIS_nLDAC _TRISB7
#define nLDAC _LATB7
#define TRIS_nCS _TRISB12
#define nCS _LATB12

...

PPSOutput(OUT_FN_PPS_SDO1,OUT_PIN_PPS_RP8); // SDO на ноге RB8 :44
PPSOutput(OUT_FN_PPS_SCK1,OUT_PIN_PPS_RP9); // SCK на ноге RB9 :1
PPSOutput(OUT_FN_PPS_SS1,OUT_PIN_PPS_RP12); // SS на ноге RB12 :10

...

void initSPI(void)
{
TRIS_nLDAC = 0; // ноги на выход
TRIS_nCS =0; 
     
nLDAC = 1;
nCS=1; 
      
SPI1CON1bits.DISSCK = 0;    // Internal serial clock is enabled
SPI1CON1bits.DISSDO = 0;    // SDOx pin is controlled by the module
SPI1CON1bits.MODE16 = 1;    // Communication is word-wide (16 bits)
SPI1CON1bits.MSTEN = 1;     // Master mode enabled
SPI1CON1bits.SMP = 0;       // Input data is sampled at the middle of data output time
SPI1CON1bits.CKE = 1;       // 
//SPI1CON1bits.SSEN = 1; пока убрано
// Idle clock state to active clock state
SPI1CON1bits.CKP = 0;       // Idle state for clock is a low level; 
SPI1CON1bits.SPRE = 7;
SPI1CON1bits.PPRE = 2;                          // active state is a high level
SPI1STATbits.SPIEN = 1;     // Enable SPI module

/*
SPI1CON2bits.SPIFSD = ?; // мастер

SPI1CON2bits.FRMDLY=?;

SPI1CON2bits.FRMPOL=?;




SPI1CON2bits.FRMEN = ?; //убрал 
*/

}
Как видно неизвестных комбинаций не так много, всего 32 да только дело где -то ещё.

не в режиме frame пользуюсь так
Код:
//в прерывании с частотой 37кГц:
    nCS=0; // выбор MCP4822

    
  
    Left = BufADC[0] & 0xFFF;
    Left |= 0x1000;
    
    SPI1BUF = Left;

//ждем  16 тактов SPI 10Mbit/s

   
   nCS=1;
   Right = BufADC[1] & 0xFFF;
   Right |= 0x9000;

   nCS=0; // снова выбор MCP4822   
    
   SPI1BUF = Right;    

// ждем 16 тактов SPI

   nCS=1;
    
   // формируем импульс строба MCP4822
   nLDAC=0;
   Nop();Nop();Nop();Nop();
   nLDAC=1;
как можно заметить приходится ждать 2 раза по 1.6мкс внутри прерывания - это вообще безобразие!

Хотелось бы в начале прерывания забросить в FIFO 2 слова данных и в конце прерывания дать строб и всё, сэкономив 3.2мкс. В этом прерывании настолько много работы, что оно выходит и почти сразу возвращается обратно. По этому 3.2мкс важны.
Миниатюры
SPI.pdf   MCP4822-E_SN.pdf  
ampersant вне форума   Ответить с цитированием
Старый 25.03.2017, 10:15   #2
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Istanbul/Marmaris
Возраст: 58
Сообщений: 2,075
Вес репутации: 2636/83
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: SPI режим мастер + frame

А что толку с SS, если во фрейм-режиме импульс может быть сформирован только ДО выдачи данных на SPI. Ну или накрыть старший передаваемый бит, максимум.
Я работаю с АЦП (аналог девайс) тоже по SPI. Скорость - чуть менее 10 Мбит/с. Строб конвертации формирую с помощью Output Compare. Кстати, в таком варианте можно все повесить на DMA. Правда потребуются уже два OC - один для строба, и один для реквестов ДМА.
Марк на форуме   Ответить с цитированием
Старый 25.03.2017, 10:27   #3
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,286
Вес репутации: 4442/101
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: SPI режим мастер + frame

Цитата:
Сообщение от Марк Посмотреть сообщение
А что толку с SS, если во фрейм-режиме импульс может быть сформирован только ДО выдачи данных на SPI. Ну или накрыть старший передаваемый бит, максимум.
Я работаю с АЦП (аналог девайс) тоже по SPI. Скорость - чуть менее 10 Мбит/с. Строб конвертации формирую с помощью Output Compare. Кстати, в таком варианте можно все повесить на DMA. Правда потребуются уже два OC - один для строба, и один для реквестов ДМА.
строб в конце один общий и очень короткий. он меня не трогает. А вот SS должен стоять в нуле пока 16 бит выбегают.
ampersant вне форума   Ответить с цитированием
Старый 25.03.2017, 11:06   #4
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,286
Вес репутации: 4442/101
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: SPI режим мастер + frame

Цитата:
Сообщение от ampersant Посмотреть сообщение
строб в конце один общий и очень короткий. он меня не трогает. А вот SS должен стоять в нуле пока 16 бит выбегают.
Вроде бы получается что вообще нет возможности использовать этот Frame режим:

давать строб SS=1 перед первым битом слова, тогда все слово будет передаваться пока на выходе SS =0. Отлично, с первым слово вышло, но теперь второе слово если оно выходит из FIFO то видимо нет такого места перед первым битом слова SS в 1 не махнет. Или махнет?
Если бы выбегая из FF строб выдался таки между словами то это бы меня спасло.

Но почему же у меня тогда SS вообще на выход не ставится? Чего ему надо то? Подключенные к модулю SPI ноги вроде как сами должны конфигурироваться на ввод-ввывод. А они все кроме SS че-то недоделываю или недопонимаю.
ampersant вне форума   Ответить с цитированием
Старый 25.03.2017, 12:58   #5
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,417
Вес репутации: 2927/63
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: SPI режим мастер + frame

ampersant
Serial Peripheral Interface (SPI)

DS70005185A-page 8

Note 1: The CKE bit is not used in Framed SPI modes. Program this bit to ‘0’ for Framed SPI modes (FRMEN = 1).
besogon на форуме   Ответить с цитированием
Старый 25.03.2017, 14:25   #6
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,286
Вес репутации: 4442/101
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: SPI режим мастер + frame

Цитата:
Сообщение от besogon Посмотреть сообщение
ampersant
Serial Peripheral Interface (SPI)

DS70005185A-page 8

Note 1: The CKE bit is not used in Framed SPI modes. Program this bit to ‘0’ for Framed SPI modes (FRMEN = 1).
SSEN вот тоже требуют обнулить в мастере. Как же оно тогда должно стать выходом?
ampersant вне форума   Ответить с цитированием
Старый 25.03.2017, 14:31   #7
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,417
Вес репутации: 2927/63
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: SPI режим мастер + frame

ampersant
я рекомендую для начала сделать как в datasheet.
у Вас мб. peripheral pin select настроен не совсем так, как Вы ожидаете?
besogon на форуме   Ответить с цитированием
Старый 25.03.2017, 15:35   #8
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,286
Вес репутации: 4442/101
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: SPI режим мастер + frame

Цитата:
Сообщение от besogon Посмотреть сообщение
ampersant
я рекомендую для начала сделать как в datasheet.
у Вас мб. peripheral pin select настроен не совсем так, как Вы ожидаете?
вполне может быть, но вроде там просто как и соседние типа sdo и sck. Эти то работают. всякие советы подойдут. Вечером опять буду с ними бороться. Софтовый вариант так то стерео поет приемлимым качеством.

Последний раз редактировалось ampersant; 25.03.2017 в 15:54.
ampersant вне форума   Ответить с цитированием
Старый 25.03.2017, 17:30   #9
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 30
Сообщений: 1,417
Вес репутации: 2927/63
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: SPI режим мастер + frame

ampersant
для звука нужен i2s.
besogon на форуме   Ответить с цитированием
Старый 25.03.2017, 18:24   #10
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,286
Вес репутации: 4442/101
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: SPI режим мастер + frame

Цитата:
Сообщение от besogon Посмотреть сообщение
ampersant
для звука нужен i2s.
в моем случае не подходит. DAC прикрутил чтобы послушать как АЦП работает. Стоит ли эти данные гнать без упаковки по сети езернета. Но если программист под ПК не осилит не стандартный битрейт - тогда придется всю шнягу ставить там где... вобщем это не важно. Про I2S читал, не подходит по смыслу. Звуков 30 стерео пар. нужно выбрать одну пару, что бы слушать на некотором удалении от этой шняжки.
Пока делал шняжки на 10-15 звуков использовал adg406. для коммутации и аудио проц для регулировки громкости.
ampersant вне форума   Ответить с цитированием
Старый 25.03.2017, 20:29   #11
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,286
Вес репутации: 4442/101
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: SPI режим мастер + frame

Цитата:
Сообщение от Марк Посмотреть сообщение
А что толку с SS, если во фрейм-режиме импульс может быть сформирован только ДО выдачи данных на SPI. Ну или накрыть старший передаваемый бит, максимум.
Я работаю с АЦП (аналог девайс) тоже по SPI. Скорость - чуть менее 10 Мбит/с. Строб конвертации формирую с помощью Output Compare. Кстати, в таком варианте можно все повесить на DMA. Правда потребуются уже два OC - один для строба, и один для реквестов ДМА.
вот и вообще почитал еррату - этот модуль больной конечно, про конкретно мой случай написано, что должно быть нормально, но советуют махать ногой программно. Или использовать таймер.

Вижу, что данный совет Марка не на пустом месте родился. Только пока не понял куда мне DMA городить если данные возникают с той же частотой с которой надо ними надо делать доделку (старшие 4 бита 0001 или 1001 дописать) и тут же отправлять. Вроде как DMA обслуживать выйдет больше возни? Или нет?
ampersant вне форума   Ответить с цитированием
Старый 25.03.2017, 21:02   #12
Марк
Senior Member
 
Аватар для Марк
 
Регистрация: 18.08.2007
Адрес: Istanbul/Marmaris
Возраст: 58
Сообщений: 2,075
Вес репутации: 2636/83
Марк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond reputeМарк has a reputation beyond repute
По умолчанию Re: SPI режим мастер + frame

С ДМА как раз возни минимум. Инициализация и запуск. По прерыванию от ДМА - флаг готовности (для загрузки или выгрузки).
А вообще настройка диаграммы в таком случае делается элементарно.
Все ШИМы формирующие диаграмму (строб и реквесты) временно выводим на ноги, а в прерывании от ДМА дергаем ногой софтово.
И видим как это все работает.
Марк на форуме   Ответить с цитированием
Старый 25.03.2017, 21:30   #13
ampersant
Senior Member
 
Аватар для ampersant
 
Регистрация: 26.02.2008
Адрес: IgorV
Сообщений: 2,286
Вес репутации: 4442/101
ampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond reputeampersant has a reputation beyond repute
По умолчанию Re: SPI режим мастер + frame

Цитата:
Сообщение от Марк Посмотреть сообщение
С ДМА как раз возни минимум. Инициализация и запуск. По прерыванию от ДМА - флаг готовности (для загрузки или выгрузки).
А вообще настройка диаграммы в таком случае делается элементарно.
Все ШИМы формирующие диаграмму (строб и реквесты) временно выводим на ноги, а в прерывании от ДМА дергаем ногой софтово.
И видим как это все работает.
видимо придется подумать над этим. Из 27мкс, 21 мкс уходит на обсчет 12 каналов АЦП вместе с этим SPI внутри прерывания от DMA перебирающего каналы АЦП. Ну и чуть менее 6мкс остается на main и другие прeрывания.
ampersant вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PIC24FJ256GB410 + SPI geotox Продукция MICROCHIP 8 14.08.2016 18:56
Имитатор DS18B20 Filya44 Вопросы начинающих 14 12.03.2012 17:39
PIC18F8722, SD карта (SPI режим) виснет ajborman Продукция MICROCHIP 16 30.08.2010 15:22
SPI интерфейс. PIC16F887 + CC2500 RF module. Cavalryman Вопросы начинающих 45 08.07.2010 18:59
Режим SPI? maxNTF Продукция MICROCHIP 4 08.08.2008 15:25


Часовой пояс GMT +3, время: 23:23.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd. Перевод: zCarot