Jump to content

    

DmitryDI

Участник
  • Content Count

    67
  • Joined

  • Last visited

Community Reputation

0 Обычный

About DmitryDI

  • Rank
    Участник

Контакты

  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

1072 profile views
  1. 1.Я установил плату PCI-1612BU. 2. установил джамперы 1,2 порт RS485 3,4 RS232 3. соединил разъемы 1 и 2 порта RS485 1 контакт у 1, 2 ко 2-му DB9 4. провел работу в Windows XP - все прекрасно работает - данные идут между 1 и 2 портом 5. запустил QNX 4.25 6. запустил свой драйвер (сам написал) - все прекрасно работает, но там у меня есть проблемки - тногда зависает PC из-за моего драйвера, поэтому решил использовать Ваш фирменный драйвер для QNX 4.25. 7.запустил ./Dev.seradv950 & - порты определились 8. отправляю в один порт ttyAP1 например, 5 байт 9. получаю в ttyAP2 только 1 байт 10. после того как закрываю портttyAP1 получаю в порт ttyAP2 остальные байты. 11. и так все время. На мой взгляд проблема в необходимости конфигурации драйвера или порта, но как это сделать ???
  2. Ну и как получилось завести I2C? Может есть вариант правильной инициации?
  3. при нажатии кнопки debug - все содержимое проекта заливается во флэш или рам (задается в свойчтвах) - у меня такая же плата - reset не требует
  4. SWD не поддерживался в старой версии Atollic 1.3. - в новой 2. - все работает скачай с сайта ATOLLIC версию lite 2.1.0
  5. Установи весию lite от Atollic - это тот же самый Eclipse - но с ним ST-LINK работает, проекты с Eclipse совместимы.
  6. Сравнивал стартовые файлы с расширением *.s - имена совпадают. Там я не до конца понял о выборе устройства - по умолчанию ****CL, как и в IAR.
  7. В связи с переходом на более дешевое ПО пришлось переводить проекты из IAR в Atollic TrueSTUDIO. Все вроде бы работает – прерывания, таймеры, ... . Кроме порта САN (в IAR все работало) – не срабатывают прерывания, сигнал с порта не идет. Все библиотеки одинаковы. В чем может быть проблема?
  8. У меня есть большой опыт по работе с Bluetooth: - перепрошивка модулей Bluetooth (написание собственных профилей в Bluelab, изменение доступа к модулю – запрос дополнительных паролей, криптография) - разработка на основе данных модулей аппаратуры (медицинская, радиоуправление) Использовал: WML-C40, WML-C20, WML-C19, LMX9820 Для реализации Вашего проекта рекомендовал бы использовать готовые USB модули. Если не устраивает дальность связи – могу разработать и изготовить мощные модули с дальностью связи -100 м за 2-3 месяца (с тестированием). Могу разработать софт. или драйвер для ПС. С уважением, Дейнека Дмитрий Санкт-Петербург ICQ: 318-817-674 E-mail: deyneka @ list.ru
  9. CAN на STM32

    Всем спасибо за отклики - все заработало: правильные настройки .......................................... // 2. Enable ext. high frequency OSC RCC_HSEConfig(RCC_HSE_ON); // wait until the HSE is ready while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); // 3. Init PLL RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_4); // 100 MHz RCC_PLLCmd(ENABLE); // wait until the PLL is ready while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); // 4. Set system clock divders RCC_ADCCLKConfig(RCC_PCLK2_Div8); RCC_PCLK2Config(RCC_HCLK_Div1); RCC_PCLK1Config(RCC_HCLK_Div2); RCC_HCLKConfig(RCC_SYSCLK_Div1); // Flash 1 wait state *(vu32 *)0x40022000 = 0x12; // 5. Clock system from PLL RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); ............................................................................. CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; CAN_InitStructure.CAN_BS1 = CAN_BS1_5tq; CAN_InitStructure.CAN_BS2 = CAN_BS2_4tq; CAN_InitStructure.CAN_Prescaler = 5; Скорость = 100МГц/2/5/10 = 1 МГбит/с
  10. CAN на STM32

    Честно сказать – я все-таки не понял – связь скорости с системной частотой – почему в формуле появилась 2 : CAN_InitStructure.CAN_Prescaler = (_systemFrequency / 2 / baudRate / 9); // CAN_SJW_1tq + CAN_BS1_4tq + CAN_BS2_4tq
  11. CAN на STM32

    Все сконфигурировал как в исходниках, но не работает. Чип STM32F107, кварц 25 Мгц, Нужен 1 МГбит/c Настройки CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; CAN_InitStructure.CAN_BS1 = CAN_BS1_16tq; CAN_InitStructure.CAN_BS2 = CAN_BS2_8tq; CAN_InitStructure.CAN_Prescaler = 1; Скорость = 25 МГц/(1+16+8) = 1 МГбит/c Обмена данных с проверенным мастером нет. ??? Заранее спасибо за помощь. конфигурация полностью void CAN_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Configure CAN1 and CAN2 IOs **********************************************/ /* GPIOB, GPIOD and AFIO clocks enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOB, ENABLE); /* Configure CAN1 RX pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOD, &GPIO_InitStructure); /* Configure CAN2 RX pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_Init(GPIOB, &GPIO_InitStructure); /* Configure CAN1 TX pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure); /* Configure CAN2 TX pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_Init(GPIOB, &GPIO_InitStructure); /* Remap CAN1 and CAN2 GPIOs */ GPIO_PinRemapConfig(GPIO_Remap2_CAN1 , ENABLE); GPIO_PinRemapConfig(GPIO_Remap_CAN2, ENABLE); /* Configure CAN1 and CAN2 **************************************************/ /* CAN1 and CAN2 Periph clocks enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1 | RCC_APB1Periph_CAN2, ENABLE); /* CAN1 and CAN2 register init */ CAN_DeInit(CAN1); CAN_DeInit(CAN2); /* Struct init*/ CAN_StructInit(&CAN_InitStructure); /* CAN1 and CAN2 cell init */ CAN_InitStructure.CAN_TTCM = DISABLE; CAN_InitStructure.CAN_ABOM = DISABLE; CAN_InitStructure.CAN_AWUM = DISABLE; CAN_InitStructure.CAN_NART = DISABLE; CAN_InitStructure.CAN_RFLM = DISABLE; CAN_InitStructure.CAN_TXFP = ENABLE; CAN_InitStructure.CAN_Mode = CAN_Mode_Normal; CAN_InitStructure.CAN_SJW = CAN_SJW_1tq; CAN_InitStructure.CAN_BS1 = CAN_BS1_16tq; CAN_InitStructure.CAN_BS2 = CAN_BS2_8tq; CAN_InitStructure.CAN_Prescaler = 1;//2 /*Initializes the CAN1 and CAN2 */ CAN_Init(CAN1, &CAN_InitStructure); CAN_Init(CAN2, &CAN_InitStructure); /* CAN1 filter init */ CAN_FilterInitStructure.CAN_FilterNumber = 1; CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask; CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000; CAN_FilterInitStructure.CAN_FilterIdLow=0x0000; CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000; CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000; CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0;//CAN_FIFO0; CAN_FilterInitStructure.CAN_FilterActivation=ENABLE; CAN_FilterInit(&CAN_FilterInitStructure); /* CAN2 filter init */ CAN_FilterInitStructure.CAN_FilterIdHigh =0x2460; CAN_FilterInitStructure.CAN_FilterNumber = 15; CAN_FilterInit(&CAN_FilterInitStructure); /* Transmit */ TxMessage.StdId = 0x01; TxMessage.ExtId = 0x01; TxMessage.RTR = CAN_RTR_DATA; TxMessage.IDE = CAN_ID_STD; TxMessage.DLC = 8; } /** * @brief Configures the NVIC for CAN. * @param None * @retval None */ void NVIC_Config(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = CAN2_RX0_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x1; NVIC_Init(&NVIC_InitStructure); } int main() { NVIC_Config(); /* CANs configuration */ CAN_Config(); /* IT Configuration for CAN1 */ CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE); /* IT Configuration for CAN2 */ CAN_ITConfig(CAN2, CAN_IT_FMP0, ENABLE); while(1) { TxMessage.Data[0] = 0x55; CAN_Transmit(CAN1, &TxMessage); Delay(1000); } }
  12. Да счетчик ошибок увеличивается и когда доходит до 255 чип вырубается и потом никак его не реанимировать, сам он не запускается.
  13. Это мне понятно. Вопрос именно по чипу SJA1000 - программно не получается выйтииз buss-off.
  14. Пишу драйвер под QNX4. Возникла проблема, когда сеть рвется (выпал разъем) – срабатывает прерывание и устройство входит в режим Buss-off - данные принимает, но послать ничего не может. Помогает только перегрузка ПС. Вопрос таков: Как вернуться в нормальный режим после образования сети вновь. С уважением, Дейнека Дмитрий