IO Device:F75113 SMbus under Linux(64bit)

From LEXWiKi

(Difference between revisions)
Jump to: navigation, search
(Steps to use)
Line 71: Line 71:
It include "libF75113.h","libF75113.so","SMBus.h","SMBus.c" and "YjlDef.h".
It include "libF75113.h","libF75113.so","SMBus.h","SMBus.c" and "YjlDef.h".
-
== Steps to use ==
+
== Steps to use libF75113 ==
-
Step1. Unzip "libF75113.zip" and puts all of files to your project.<\ br>
+
=== Step1. Unzip "libF75113.zip" and puts all of files to your project ===
-
Link "libF75113.so" and include "libF75113.h".<\ br>
+
Link "libF75113.so" and include "libF75113.h".<br />
-
Step2. Call 'SMBUS_Install()' to initial SMBUS resource. Remeber release it before close programe.<\ br>
+
=== Step2. Call 'SMBUS_Install()' to initial SMBUS resource ===
 +
/* Initial SMBUS resource */
 +
if(SMBus_Install() == FALSE)
 +
{
 +
printf("Initial SMBUS failed!!! Quit console, Bye bye! \n");
 +
return false;
 +
}
-
Step3: Call 'F75113_Init()' to initial F75113 port. It default to initial CIO1(4I4O) and CIO2(4I4O).<\ br>
+
=== Step3: Call 'F75113_Init()' to initial F75113 port. It default to initial CIO1(4I4O) and CIO2(4I4O). ===
 +
/* Initial F75113 CIO1 and CIO2. Initial F75113 WDT */
 +
bInitOk = F75113_Init();
-
Step4: Call 'F75113_SetDigital_Low_Output() to use CIO1 and CIO2 DO pin send signal.<\ br>
+
if(bInitOk == false)
-
(Send Value: CIO1-DO1:0x01, CIO1-DO2:0x02, CIO1-DO3:0x04, CIO1-DO4:0x08)<\ br>
+
printf("F75113 initial failed!!!!\n");
-
(Send Value: CIO2-DO1:0x10, CIO2-DO2:0x20, CIO2-DO3:0x40, CIO2-DO4:0x80)<\ br>
+
else
-
+
printf("F75113 initial success.\n");
 +
F75113_SetWDT_init();
-
=== GPIO Status Register Write ===
+
=== Step4: Call 'F75113_SetDigital_Low_Output() to use CIO1 and CIO2 DO pin send signal. ===
 +
(Send Value: CIO1-DO1:0x01, CIO1-DO2:0x02, CIO1-DO3:0x04, CIO1-DO4:0x08)<br />
 +
(Send Value: CIO2-DO1:0x10, CIO2-DO2:0x20, CIO2-DO3:0x40, CIO2-DO4:0x80)<br />
-
init_fintek_sio(eSIO_TYPE_F75113, 0 ,&sio_data)
+
/* Ex: Use ((CIO1-DO1(0x01) + CIO2-DO1(0x10) + CIO2-DO4(0x80)) send DO signal. */
-
ActiveSIO(sio_data.ic_port, sio_data.key);
+
BYTE byteDoVal = 0x91;
-
CHECK_RET(_EnableGPIO(0x06 , eGPIO_Mode_Enable));
+
F75113_SetDigital_Low_Output(byteDoVal);
-
CHECK_RET(_SetGpioOutputEnableIdx( 0x06 , eGPIO_Direction_Out));
+
-
CHECK_RET(_SetGpioDriveEnable( 0x06 , eGPIO_Drive_Mode_OpenDrain));
+
-
CHECK_RET(_SetGpioOutputDataIdx( 0x06 , 1));
+
-
DeactiveSIO(sio_data.ic_port);
+
-
=== GPIO Status Register Read ===
+
=== Step5: 'F75113_GetDigital_Low_Input() to get CIO1 and CIO2 DI pin recieved signal. ===
 +
(Get Value: CIO1-DI1:0x01, CIO1-DI2:0x02, CIO1-DI3:0x04, CIO1-DI4:0x08)<br />
 +
(Get Value: CIO2-DI1:0x10, CIO2-DI2:0x20, CIO2-DI3:0x40, CIO2-DI4:0x80)<br />
-
init_fintek_sio(eSIO_TYPE_F75113, 0 ,&sio_data)
+
/* Get DI value from CIO1 and CIO2 */
-
ActiveSIO(sio_data.ic_port, sio_data.key);
+
BYTE byteDoVal = F75113_GetDigital_Low_Input();
-
CHECK_RET(_EnableGPIO(0x06 , eGPIO_Mode_Enable));
+
-
CHECK_RET(_SetGpioOutputEnableIdx( 0x06 , eGPIO_Direction_In));
+
-
CHECK_RET(_GetGpioInputDataIdx( 0x06 , &data));
+
-
DeactiveSIO(sio_data.ic_port);
+
-
=== GPIO Comparison ===
+
=== Step6: Call 'F75113_SetWDT_Enable() to start WDT. ===
-
+
(Time seconds value: Seconds from 0 to 255)<br />
-
CHECK_RET(_GetGpioInputDataIdx (0x10,&BDIO_data));
+
/* Ex: Set WDT enable after 10 seconds. */
-
if((BDIO_data == 1) & (BDIO_startvalue_data == 0) )
+
byteWdVal = 10;
-
{
+
F75113_SetWDT_Enable(byteWdVal);
-
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton2), TRUE);
+
-
}
+
-
CHECK_RET(_GetGpioInputDataIdx (0x11,&BDI1_data));
+
-
if((BDI1_data == 1) & (BDI1_startvalue_data == 0) )
+
-
{
+
-
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton4), TRUE);
+
-
}
+
-
CHECK_RET(_GetGpioInputDataIdx (0x12,&BDI2_data));
+
-
if((BDI2_data == 1) & (BDI2_startvalue_data == 0) )
+
-
{
+
-
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton6), TRUE);
+
-
}
+
-
CHECK_RET(_GetGpioInputDataIdx (0x13,&BDI3_data));
+
-
if((BDI3_data == 1) & (BDI3_startvalue_data == 0) )
+
-
{
+
-
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbutton8), TRUE);
+
-
}
+
-
=== F75113 driver delete ===
+
=== Step7: Call 'F75113_SetWDT_Disable() to stop WDT. ===
 +
/* Stop WDT */
 +
F75113_SetWDT_Disable();
-
on_window1_destory (GtKObject *object,
+
=== Final step: Call 'SMBUS_Uninstall()' to release SMBUS resource if program closed. ===
-
gpointer user_data)
+
/* Release SMBUS resource */
-
{
+
SMBus_Uninstall();
-
int nRet = 0;
+
-
sFintek_sio_data sio_data;
+
-
set_debug(1);
+
-
if( nRet = init_fintek_sio(eSIO_TYPE_F75113,0, &sio_data))
+
-
{
+
-
fprintf(stderr,"init_fintek_sio error\n");
+
-
exit(3);
+
-
}
+
-
ActiveSIO(sio_data.ic_port, sio_data.key);
+
-
DeactiveSIO(sio_data.ic_port);
+
-
gtk_main_quit();
+
-
}
+

Revision as of 17:52, 3 April 2024

Contents

The Sample code source you can download from

<Google Drive>

Binary file(64 bit): F75113_SMBUSv1.0.2L_Bin

<FTP>

Binary file(64 bit): F75113_SMBUSv1.0.2L_Bin

We do the demo test with a test tool which DIx connect to DOx with Relay.


libF75113 DLL

<Google Drive> DLL file: libF75113


libF75113 DLL Sample Code

<Google Drive> Source file: F75113_SAMPLE_CODE

<Google Drive> Binay file: F75113_SAMPLE_BIN

MB Support List

Cacrd

M113A

edit table


How to use this Demo Application

Before you use this

please enter F75113set.sh and read the Readme.txt enter command

after all you can open the program

Image:SMBUSLinux.JPG

1. Press the "Test" button to test CIO1 function

2. Press the "C2test" button to test CIO2 function

3. Press the "C3test" button to test CIO3 function

4. Press the "C4test" button to test CIO4 function

F75113 GPIO Picture

Image:t5.jpg

How to use libF75113

Introduction

"libF75113" could helps developer quickly operate F75113 by SMBUS. It include "libF75113.h","libF75113.so","SMBus.h","SMBus.c" and "YjlDef.h".

Steps to use libF75113

Step1. Unzip "libF75113.zip" and puts all of files to your project

Link "libF75113.so" and include "libF75113.h".

Step2. Call 'SMBUS_Install()' to initial SMBUS resource

   /* Initial SMBUS resource */
   if(SMBus_Install() == FALSE)
   {
       printf("Initial SMBUS failed!!! Quit console, Bye bye! \n");
       return false;
   }

Step3: Call 'F75113_Init()' to initial F75113 port. It default to initial CIO1(4I4O) and CIO2(4I4O).

   /* Initial F75113 CIO1 and CIO2. Initial F75113 WDT */
   bInitOk = F75113_Init();
   if(bInitOk == false)
       printf("F75113 initial failed!!!!\n");
   else
       printf("F75113 initial success.\n");
   F75113_SetWDT_init();

Step4: Call 'F75113_SetDigital_Low_Output() to use CIO1 and CIO2 DO pin send signal.

(Send Value: CIO1-DO1:0x01, CIO1-DO2:0x02, CIO1-DO3:0x04, CIO1-DO4:0x08)
(Send Value: CIO2-DO1:0x10, CIO2-DO2:0x20, CIO2-DO3:0x40, CIO2-DO4:0x80)

   /* Ex: Use ((CIO1-DO1(0x01) + CIO2-DO1(0x10) + CIO2-DO4(0x80)) send DO signal. */
   BYTE byteDoVal = 0x91;
   F75113_SetDigital_Low_Output(byteDoVal);

Step5: 'F75113_GetDigital_Low_Input() to get CIO1 and CIO2 DI pin recieved signal.

(Get Value: CIO1-DI1:0x01, CIO1-DI2:0x02, CIO1-DI3:0x04, CIO1-DI4:0x08)
(Get Value: CIO2-DI1:0x10, CIO2-DI2:0x20, CIO2-DI3:0x40, CIO2-DI4:0x80)

   /* Get DI value from CIO1 and CIO2 */
   BYTE byteDoVal = F75113_GetDigital_Low_Input();

Step6: Call 'F75113_SetWDT_Enable() to start WDT.

(Time seconds value: Seconds from 0 to 255)

   /* Ex: Set WDT enable after 10 seconds. */
   byteWdVal = 10;
   F75113_SetWDT_Enable(byteWdVal);

Step7: Call 'F75113_SetWDT_Disable() to stop WDT.

   /* Stop WDT */
   F75113_SetWDT_Disable();

Final step: Call 'SMBUS_Uninstall()' to release SMBUS resource if program closed.

   /* Release SMBUS resource */
   SMBus_Uninstall();
Personal tools