|
imx233 |
|
|
|
 |
Ответов
|
Feb 22 2014, 10:16
|
Гуру
     
Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923

|
Разобрался после долгих экспирементов, gpio нумеруются 0 gpio -> это банк 0 пин 0; 32 gpio -> это банк 1 пин 0 и тд. Если ядро поддерживает gpio ио к ним можно и лучше обращаться через sysfs. Набросал немного кода, работает может кому сгодится. h Код #define SIZENAM 255 enum pinstatus {PIN_OFF,PIN_ON}; enum pindirection{PIN_IN,PIN_OUT}; int gpioexp(int pin_num,pindirection pd,pinstatus st); int gpioini(); int gpioset(int pin_num,pinstatus ps); pinstatus gpioget(int pin_num); cpp CODE #include <stdio.h> /* For printf() */ #include <string.h> /* For strerror() */ #include <unistd.h> /* For read(), close() */ #include <fcntl.h> /* For open() */ #include <errno.h> /* For errno */ #include <sys/poll.h> /* For poll() */ #include <time.h> #include <stdlib.h> #include "gpio.h"
/*-------------------------------------------------------------------------------------------------------*/ int gpioexp(int pin_num,pindirection pd,pinstatus st){ FILE * fp = NULL; char gpio_file_name[SIZENAM]; if ((fp = fopen("/sys/class/gpio/export", "ab")) != NULL) { rewind(fp); fprintf(fp,"%d",pin_num); fclose(fp); }else{ printf("Cannot open GPIO value for %s\n","/sys/class/gpio/export"); return -1; } memset(gpio_file_name,0,SIZENAM); sprintf(gpio_file_name,"/sys/class/gpio/gpio%d/direction",pin_num); if ((fp = fopen(gpio_file_name, "rb+")) != NULL) { rewind(fp); switch(pd){ case PIN_IN:{ fprintf(fp,"in"); break; }//case case PIN_OUT:{ fprintf(fp,"out"); break; }//case default:break; }//switch fclose(fp); if(pd!= PIN_IN){ memset(gpio_file_name,0,SIZENAM); sprintf(gpio_file_name,"/sys/class/gpio/gpio%d/value",pin_num); if ((fp = fopen(gpio_file_name, "rb+")) != NULL) { switch(st){ case PIN_ON:{ fprintf(fp,"1"); break; }//case case PIN_OFF:{ fprintf(fp,"0"); break; }//case default:break; }//switch fclose(fp); } } } return 0; } /*-------------------------------------------------------------------------------------------------------*/ int gpioini(){ /* pin out */ gpioexp(32,PIN_OUT,PIN_OFF); gpioexp(39,PIN_OUT,PIN_OFF); /* pin in */ gpioexp(23,PIN_IN,PIN_OFF);
return 0; } /*-------------------------------------------------------------------------------------------------------*/ int gpioset(int pin_num,pinstatus ps){ FILE * fp = NULL; char gpio_file_name[SIZENAM]; memset(gpio_file_name,0,SIZENAM); sprintf(gpio_file_name,"/sys/class/gpio/gpio%d/value",pin_num); if ((fp = fopen(gpio_file_name, "rb+")) != NULL) { switch(ps){ case PIN_ON:{ fprintf(fp,"1"); break; }//case case PIN_OFF:{ fprintf(fp,"0"); break; }//case default:break; }//switch fclose(fp); } return 0; } /*-------------------------------------------------------------------------------------------------------*/ pinstatus gpioget(int pin_num){ FILE * fp = NULL; char gpio_file_name[SIZENAM]; long lSize; char * buffer; size_t result; int temm =0; pinstatus ret = PIN_OFF; memset(gpio_file_name,0,SIZENAM); sprintf(gpio_file_name,"/sys/class/gpio/gpio%d/value",pin_num); if ((fp = fopen(gpio_file_name, "rb+")) != NULL) { fseek (fp , 0 , SEEK_END); lSize = ftell (fp); rewind (fp);
buffer = (char*) malloc (sizeof(char)*lSize); if (buffer == NULL) { printf("Memory error"); }else{
result = fread (buffer,1,lSize,fp); temm = atoi(buffer); switch(temm){ case 0:{ ret = PIN_OFF;; break; }//case case 1:{ ret = PIN_ON; break; }//case default:break; }//switch
} free (buffer); fclose(fp); } return ret; } /*-------------------------------------------------------------------------------------------------------*/ Есть еще одна проблема, после перезагрузки часы слетают, даже если есть батарея. Может у кого была похожая проблема?
Сообщение отредактировал IgorKossak - Feb 22 2014, 22:59
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
|
|
|
|
Сообщений в этой теме
sergey sva imx233 Dec 6 2013, 19:01 sergey sva Все вроде разобрался.) Остался один вопрос нужен ф... Dec 7 2013, 09:22 Major Для кейла подойдет?
Запуск сделан с WinCE BSP (xld... Dec 7 2013, 11:03 sergey sva Из того что есть под рукой только эта плата. Спаси... Dec 7 2013, 11:12 kovigor Цитата(sergey sva @ Dec 7 2013, 15:12) Из... Dec 7 2013, 11:31 sergey sva У меня сейчас на компьютере не установлены не iar ... Dec 7 2013, 12:26 sergey sva Вроде все ок, получаю bin файл, как теперь зашить ... Dec 7 2013, 14:54 Major В мануале написано что еcть JTAG, совмещенный с SD... Dec 7 2013, 16:16 sergey sva Как то неудобно, как максимально просто его прошит... Dec 7 2013, 17:25 Major А DDR память не подходит?
Внутреннюю имеет смысл д... Dec 7 2013, 18:08 sergey sva Хочу пока без системы, ddr подходит на плате 64мб ... Dec 7 2013, 18:28 aaarrr Цитата(sergey sva @ Dec 7 2013, 22:28) Ко... Dec 7 2013, 18:38 sergey sva uboot нужно загрузить в внутреннюю память 64кб а ... Dec 7 2013, 18:47 aaarrr Нет, в SDRAM. В 64кБ он не влезет. Dec 7 2013, 18:59 sergey sva Что то мне не понятно, как это сделать ( . проводо... Dec 7 2013, 19:05 aaarrr Цитата(sergey sva @ Dec 7 2013, 23:05) Чт... Dec 7 2013, 19:09 sasamy Цитата(sergey sva @ Dec 7 2013, 23:05) Чт... Dec 7 2013, 20:25  Golikov A. Цитата(sasamy @ Dec 8 2013, 00:25) Это вс... Dec 8 2013, 19:56 sergey sva Нужно будет прошивку часто менять и после каждой п... Dec 7 2013, 19:25 aaarrr Без ОС - это без Linux, или совсем без? Но в любом... Dec 7 2013, 19:34 sergey sva Благодарю за подробный ответ. Теперь вроде бы немн... Dec 8 2013, 08:16 sasamy Цитата(sergey sva @ Dec 8 2013, 12:16) То... Dec 8 2013, 18:13 _3m Цитата(sergey sva @ Dec 8 2013, 12:16) Бл... Dec 8 2013, 20:14 Golikov A. внутри загрузчик мелкий, он грузит с карты памяти ... Dec 8 2013, 15:11 aaarrr Зачем ручками? ENC28 на ките стоит, если не ошибаю... Dec 8 2013, 20:11 Golikov A. а... все же МАК железный. Я просто видел эту платк... Dec 9 2013, 06:36 sergey sva Спасибо выручили ). Dec 9 2013, 09:03 sergey sva Можно после компиляции загружать в sd mmc карту фа... Dec 13 2013, 10:49 _3m Цитата(sergey sva @ Dec 13 2013, 14:49) М... Dec 13 2013, 11:02 sergey sva Что то или делаю не правильно или может загрузчика... Dec 13 2013, 13:17 _3m Цитата(sergey sva @ Dec 13 2013, 17:17) Ч... Dec 14 2013, 05:22 sergey sva Mожет проблема из за карты она 4гб, а адресное про... Dec 13 2013, 16:49 sergey sva Пробовал по всякому mfgtool не получилось загрузит... Dec 14 2013, 07:53 Golikov A. защиту от записи на карте случаем не поставили? Dec 14 2013, 08:14 sergey sva Нет проверил. Dec 14 2013, 12:35 sergey sva Не в какую не работает загрузка mfgtools прогресс ... Dec 14 2013, 16:31 Golikov A. сд карты бывают многих форматов, и там при инициал... Dec 14 2013, 19:34 sergey sva Вот платка которая у меня ссылка Судя по документа... Dec 14 2013, 20:42 Golikov A. ну кроме адресного пространства карты бывают разны... Dec 15 2013, 06:35 sergey sva Скорее всего она не поддерживает sdhc Изучаю доку ... Dec 15 2013, 08:02 sergey sva Немного проясняется )) Может есть примеры исходни... Dec 19 2013, 12:32 _3m Цитата(sergey sva @ Dec 19 2013, 16:32) Н... Dec 20 2013, 07:37 sergey sva Понятно, не любят этот процессор. Dec 19 2013, 17:51 sergey sva Спасибо, видимо у меня поиск еще плохо работает ))... Dec 20 2013, 10:33 sergey sva Помогите разобраться как работает, любые мысли. П... Dec 21 2013, 11:12 _3m Цитата(sergey sva @ Dec 21 2013, 15:12) П... Dec 21 2013, 18:42  sasamy Цитата(_3m @ Dec 21 2013, 22:42) SPL по м... Dec 21 2013, 20:29 sergey sva То что с ммски не запускалась нашел причину, видим... Dec 21 2013, 14:06 sergey sva Немного понятно сейчас посмотрю. Еще вопросик -boo... Dec 21 2013, 21:48 sasamy Цитата(sergey sva @ Dec 22 2013, 01:48) Н... Dec 21 2013, 22:17 sergey sva Я не выбирал этот процессор, у меня была эта плата... Dec 22 2013, 06:37 sergey sva Возник такой вопрос скрипты одинаковые и для powe... Dec 22 2013, 19:29 sergey sva В каком файле происходит инициализация usb, плохо ... Dec 23 2013, 11:49 sergey sva Что то у меня никак линукс не хочет работать, реши... Jan 18 2014, 20:06 sergey sva Все работает )). Помогите настроить интернет на ... Feb 6 2014, 17:30 sergey sva интернет тоже заработал, в /etc/nectl есть примеры... Feb 7 2014, 17:07 sergey sva Еще проблема поставил lighttpd и fast_sgi, все сд... Feb 10 2014, 18:31 sergey sva Еще вопрос по этому процессору и плате, Как долго ... Feb 11 2014, 13:33 Golikov A. потому на компьютерах с твердотельными накопителям... Feb 11 2014, 18:36 sergey sva Понятно,попробую все лишнее отключить. php тоже за... Feb 11 2014, 22:17 sergey sva Разобрался через open write. Feb 12 2014, 01:23 sergey sva Какой программкой лучше снять образ sdmmc в window... Feb 12 2014, 13:48 Golikov A. Когда делал поддержку SD кард, очень помогало WinH... Feb 12 2014, 17:54 sergey sva Сейчас скопировал Winhex с одной карты на другую ... Feb 12 2014, 19:43 Golikov A. конечно,
почитайте про файловые системы. В любой ... Feb 12 2014, 19:48 sergey sva Не вручную же исправлять наверно утилитой какой ни... Feb 12 2014, 20:41 Golikov A. Цитата(sergey sva @ Feb 13 2014, 00:41) Н... Feb 12 2014, 21:01 sergey sva А как правильнее ? Feb 13 2014, 08:00 Golikov A. скорее как безопаснее, безопаснее через утилиту уп... Feb 13 2014, 10:34 sergey sva С этим теперь тоже все понятно, нужно отформатиров... Feb 14 2014, 18:58 sergey sva Попробовал управлять пинами через sysfs export ... Feb 19 2014, 11:44 Golikov A. похоже на смещение шины адреса при 32 (4 байтном) ... Feb 19 2014, 12:03 sergey sva Как это можно победить ? ) Feb 19 2014, 12:07 Golikov A. ну для начала надо убедиться что это так.
ну пото... Feb 19 2014, 13:51 sergey sva Линукс мне этим и нравится ,что надо сделать то не... Feb 19 2014, 18:08 sergey sva Никак не пойму почему так выходит.
Feb 20 2014, 15:30 sergey sva Попробовал через память тоже все смещено так же.
К... Feb 20 2014, 17:47 sergey sva Из чего могут часы сбрасываться после перезагрузки... Feb 22 2014, 15:14 sergey sva В этом микроконтроллере нет часов есть Real-time c... Feb 23 2014, 09:27 sergey sva Еще заметил такое, если отверткой коснуться корпус... Feb 23 2014, 11:46 sergey sva Что можно придумать что бы часы не сбрасывались ка... Feb 24 2014, 17:58 Golikov A. поставить внешние часы с батарейкой и с них брать ... Feb 25 2014, 07:11 sergey sva Сделал как вы посоветовали вроде все работает. У м... Mar 1 2014, 12:25 Golikov A. 12 битное АЦП дает 4096 значений, на весь свой диа... Mar 1 2014, 18:41
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|