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

Работа с CAN шиной на PIC через SPI


Zombie47

Рекомендуемые сообщения

Наверно мне бы стоило в вопросах для начинающих задать этот вопрос, но с другой стороны у меня уже это все давно работает, хоть я не знаю как)))
Среда MicroC Pro
У меня МК PIC16F1847 с кварцем 20Mhz, к нему подключен по SPI MCP2510 с кварцем 8Mhz а к нему MCP2551
Вот у меня в коде что то вроде стандартной конфигурации CAN SPI

void CANinit(void){
 Can_Init_Flags = 0;
  Can_Send_Flags = 0;                                         // clear flags
  Can_Rcv_Flags  = 0;                                         //
  Can_Send_Flags = _CANSPI_TX_PRIORITY_0 &                    // form value to be used
                   _CANSPI_TX_STD_FRAME &                     //     with CANSPIWrite
                   _CANSPI_TX_NO_RTR_FRAME;
  Can_Init_Flags = _CANSPI_CONFIG_SAMPLE_THRICE &             // Form value to be used
                   _CANSPI_CONFIG_PHSEG2_PRG_ON &             //  with CANSPIInit
                   _CANSPI_CONFIG_STD_MSG &
                   _CANSPI_CONFIG_DBL_BUFFER_ON &
                   _CANSPI_CONFIG_VALID_STD_MSG;
  //SPI1_Init();                                                     // initialize SPI1 module
  CANSPIInitialize(1,1,3,3,1,Can_Init_Flags);                      // Initialize external CANSPI module
  CANSPISetOperationMode(_CANSPI_MODE_CONFIG,0xFF);                // set CONFIGURATION mode
  CANSPISetMask(_CANSPI_MASK_B1,-1,_CANSPI_CONFIG_STD_MSG);        // set all mask1 bits to ones
  CANSPISetMask(_CANSPI_MASK_B2,-1,_CANSPI_CONFIG_STD_MSG);        // set all mask2 bits to ones
  CANSPISetFilter(_CANSPI_FILTER_B2_F3,ID_1st,_CANSPI_CONFIG_STD_MSG);        // set id of filter B2_F3 to 1st node ID    áåç ýòîé ñòðîêè íå ðàáîòàåò
    CANSPISetFilter(_CANSPI_FILTER_B2_F4,ID_2nd,_CANSPI_CONFIG_STD_MSG);        // set id of filter B2_F3 to 1st node ID    áåç ýòîé ñòðîêè íå ðàáîòàåò
    CANSPISetFilter(_CANSPI_FILTER_B1_F2,ID_3rd,_CANSPI_CONFIG_STD_MSG);        // set id of filter B2_F3 to 1st node ID    áåç ýòîé ñòðîêè íå ðàáîòàåò
    CANSPISetFilter(_CANSPI_FILTER_B2_F1,ID_4th,_CANSPI_CONFIG_STD_MSG);        // set id of filter B2_F3 to 1st node ID    áåç ýòîé ñòðîêè íå ðàáîòàåò

  CANSPISetOperationMode(_CANSPI_MODE_NORMAL,0xFF);
}

Не очень уже помню как и где это настраивается, но скорость работы у меня 500 000 байт в секунду вроде, ну или какие там единицы.
Не хочу перегружать вопрос кучей кода поэтому буду вырезать главное чтобы было читабельно.
В основном юзаю отправку например вот:
 

  zaderzka=180; //величина задержки 9765 это 1 сек. 190 задержка это 0.019сек
  zaderzka_flag=1; 
if (i>zaderzka) {
 CANSPIWrite(ID_512, RxTx_Data512, 8, Can_Send_Flags);
 RxTx_Data512[5]++;//счетчик от 00 до FF
}

Вопросы и проблемы:
1. я формирую задержку таймером, который запускаю флагом в коде, и я эту задержку использую для отправки в SPI шину, там проходит время по посылке в SPI и тд, поэтому тайминг отправки CAN не точный и плавает. А мне надо чтобы непосредственно MCP2510 слал мой пакет в шину с определенным таймингом как это сделать?
2. в шине есть еще устройства, они тоже шлют в шину пакеты со своим таймингом. Вообщем иногда я вижу очень редко пакеты встречаются, но контроллер MCP2510 вроде как рулит чтобы не было нахлеста. По идее хорошо бы чтобы каждое устройство попадало в свой тайминг, но я не могу выдержать отправку раз в 20мсек. у меня плавает туда сюда то 25 то 22 то 26 и тд, и поэтому встречаются места там где пересекаются пакеты и как я вижу по счетчикам, один пакет у меня просто теряется, а другой пакет который я шлю почему то шлется два три раза подряд, именно MCP2510 так как счетчик без изменений то-есть программа не сделала цикла.
3. Как вообще настраивается прием сообщений? как я понял настройкой фильтров типо этого:  CANSPISetFilter(_CANSPI_FILTER_B2_F1,ID_4th,_CANSPI_CONFIG_STD_MSG);
Тоесть я правильно понимаю что всего там ограниченное количество фильтров которое я могу использовать на прием?

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

  • 1 год спустя...

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Нормально так, сейчас поиском искал опять инфу как с PIC работать с кан шиной и поиском вышел на это свое двухлетнее сообщение, на которое никто не ответил )))

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

  • 1 год спустя...

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

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

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

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

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

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...