Официальный форум СВД Встраиваемые Системы
23 Апрель, 2024, 21:26:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с платой ЦАП advantech PCI1724U  (Прочитано 1828 раз)
YuriAndIPPE
Интересующийся

Сообщений: 2


« : 08 Февраль, 2016, 10:37:54 »

Здравствуйте, работаю с платой ЦАП PCI1724U в QNX 6.5.0. Поиск и инициализация платы происходит успешно, запись в регистры вроде тоже, но на портах напряжение отсутствует, не могу понять в чем дело. Может из-за того, что она имеет 32 битные регистры? Не знаю даже где копать. В чем может быть проблема? Помогите пожалуйста. Заранее спасибо.

Код:
struct pci_dev_info info1724U;
uint16_t iobase1724U, io_size;

void *hdl1724U;

int init_PCI1724U()
{
 int n;

 memset(&info1724U, 0, sizeof (info1724U));


 if (pci_attach(0) < 0) {
  //  perror("pci_attach error");
    return 1;
 }


 info1724U.VendorId = 0x13FE;
 info1724U.DeviceId = 0x1724;
 if ((hdl1724U = pci_attach_device(0, PCI_SHARE|PCI_INIT_ALL|PCI_SEARCH_VENDEV, 0, &info1724U)) == 0) {
   // perror("pci_attach_device_error");
    return 2;
 }
 for(n = 0; n < 6; n++) {
  if(PCI_IS_IO(info1724U.PciBaseAddress[n])) {
  iobase1724U = PCI_IO_ADDR(info1724U.PciBaseAddress[n]);
  io_size  =info1724U.BaseAddressSize[n];
  break;
  }
 }

 ThreadCtl(_NTO_TCTL_IO, 0);

 if(mmap_device_io(io_size,iobase1724U) == (uintptr_t)MAP_DEVICE_FAILED){
   // perror("Can't get access to I/O memory, %s",strerror(errno));
    //perror("Can't get access to I/O memory");
    return 3;
 }
 printf("iobase1724: %d\n", iobase1724U);

 out32(iobase1724U+0x04, 0x00); //не синхронизировать выходы

 return 0;
}

void output_DAC1724U(){
    out32(iobase1724U, 0x10FFFF);
}

void* thread_out_DAC1724U(void *not_used){
while(1){
output_DAC1724U();
delay(5);
}
return 0;
}
Записан
Андрей Докучаев
Сотрудник СВД ВС
Легенда

Сообщений: 1075



WWW
« Ответ #1 : 08 Февраль, 2016, 11:24:56 »

Добрый день! В первую очередь нужно точно убедиться, что (а) настраивать устройство необходимо через IO, а не MMIO и (б) выполнены все требуемые документацией инициализационные действия. Также имеет смысл поискать открытые драйвера и рекомендации производителя устройства.
« Последнее редактирование: 08 Февраль, 2016, 11:26:29 от Андрей Докучаев » Записан

YuriAndIPPE
Интересующийся

Сообщений: 2


« Ответ #2 : 08 Февраль, 2016, 14:48:54 »

Все инициализационные действия сделаны согласно документации. Да и с другими платами этого же производителя проблем не возникает. А драйверов от производителя нет под QNX. Вот ссылка на документацию http://www.prosoft.ru/cms/f/261833/pci1724Updf.pdf с 34 страницы идет описание регистров. Согласно документации, если отключен режим синхронизации
Код:
out32(iobase1724U+0x04, 0x00);
, то данные выводятся сразу на порт.
Код:
out32(iobase1724U, 0x10FFFF);
. Но этого не происходит, может я что-то делаю не так?
Записан
Андрей Докучаев
Сотрудник СВД ВС
Легенда

Сообщений: 1075



WWW
« Ответ #3 : 08 Февраль, 2016, 15:42:06 »

Да и с другими платами этого же производителя проблем не возникает

Порой производители недоговаривают.

А драйверов от производителя нет под QNX

Посмотрите как сделано в открытых драйверах для Linux.
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2024 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 07 Март, 2024, 20:09:41