ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: скорость CAN в Windows CE  (Прочитано 2603 раз)

0 Пользователей и 1 Гость просматривают эту тему.

truefish

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 10
скорость CAN в Windows CE
« : 19 Августа, 2014, 08:32:21 »

Здравствуйте!
1. По умолчанию в windows включен UART3 или CAN?
2. CAN контроллер работает на какой чатоте?
3. Как задать скорость работы CAN интерфейса в WIndows CE?

Спасибо.

P.S. В SDK файл cansdk.cpp описывает функцию получения скорости так, но у меня она возвращает все время 0.
//-----------------------------------------------------------------------------
//
// Function: CANGetClockRate
//
// This function will retrieve the clock rate divisor. Note that the value
// is not the absolute peripheral clock frequency. The value retrieved should
// be compared against the CAN specifications to obtain the true frequency.
//
// Parameters:
//      hCAN
//          [in] The CAN device handle retrieved from CANOpenHandle().
//
//      pwClkRate
//          [out] The pointer of WORD variable that retrieves divisor index.
//          Refer to CAN specification to obtain the true clock frequency.
//
// Returns: 
//      Return TRUE or FALSE. If the result is TRUE, the operation is
//      successful.
//
//-----------------------------------------------------------------------------
BOOL CANGetClockRate(HANDLE hCAN, PWORD pwClkRate)
{
    CAN_FUNCTION_ENTRY();

    if (!DeviceIoControl(hCAN,      // file handle to the driver
        CAN_IOCTL_GET_CLOCK_RATE,   // I/O control code
        NULL,                       // in buffer
        0,                          // in buffer size
        pwClkRate,                  // out buffer
        sizeof(WORD),               // out buffer size
        NULL,                       // pointer to number of bytes returned
        NULL))                      // ignored (=NULL)
    {
        DEBUGMSG(ZONE_ERROR,
            (TEXT("%s: CAN_IOCTL_GET_CLOCK_RATE failed!\r\n"), __WFUNCTION__));
        return FALSE;
    }

    CAN_FUNCTION_EXIT();
   
    return TRUE;
}
« Последнее редактирование: 19 Августа, 2014, 11:50:41 от truefish »
Записан

truefish

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 10
Re: скорость CAN в Windows CE
« Ответ #1 : 21 Августа, 2014, 09:17:33 »

Вот что мне ответили во Frescale:

Цитировать
Dear Dmitriy Podust,

In reply to your Service Request SR 1-2399435788:

Regarding "default clock frequency", please look at common_can.h, included at

C:\WINCE600\PLATFORM\COMMON\SRC\SOC\COMMON_FSL_V2_PDK1_9\INC

So CAN timing parameters are defined on the common_can.h located under
the path:
:\WINCE600\PLATFORM\COMMON\SRC\SOC\
COMMON_FSL_V2_PDK1_6\INC using a
#define called CAN_TIMING_PARAMETERS.

This define modifies the CONTROL REGISTER of the CAN module.

#define CAN_TIMING_PARAMETERS 0x0892 as default, this value
belongs to the high part of the CTRL.

For example one can configure CAN baudrate for 125KHz:

PRESDIV=132 and PSEG1=0, PSEG2=0;

So Baudrate =66.5MHz/((PRESDIV+1)*(SYNC_SEG+PROP_SEG +
PSEG1 + 2+PSEG2 + 1))=66.5/((132+1)*(1+0+0+2+0+1))=125KHz



Thank you for your interest in Freescale Semiconductor products and for the opportunity to serve you.

Should you need to contact us with regard to this message, please see the notes below.

Best Regards,

Alfredo
Technical Support
Freescale Semiconductor
Записан

Sergei

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 1
Re: скорость CAN в Windows CE
« Ответ #2 : 05 Декабря, 2014, 08:45:40 »

Извините, но не понятно как установить скорость работы CAN на плате ТионПро 28.
Какая скорость стоит по умолчанию? Где можно задать эту скорость?

Работаю с библиотекой cansdk.lib
Записан

Danila

  • Administrator
  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 703
Re: скорость CAN в Windows CE
« Ответ #3 : 05 Декабря, 2014, 21:12:53 »

Задать скорость через cansdk не получится - эта функция не реализована.
Скорость задана в исходниках драйвера, об этом написано в комментарии выше, от freescale.
То есть нужно изменять драйвер и пересобирать ОС.

Установлена скорость, судя по методике расчета, 24МГц / (9*8) = 333 кГц. Цифра странная, возможно я ошибся в расчетах.
Записан