⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fanboard.c

📁 psoc_usb的代码,用来小卡测试的.没事下下来
💻 C
字号:
//-----------------------------------------------------------------------------
//   File:      ez_vkb.h
//   Contents:  main module of a simple non-renumerating firmware
//
// $Archive: ez_vkb.c $
// $Date: 10/08/06 5:12p $
// $Revision: 1.00 $
//
//-----------------------------------------------------------------------------
// Copyright 2006, xsh.han@itc.inventec
//-----------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#include "fx2.h"
#include "fx2regs.h"
#include "absacc.h"
#include "scmain.h"
#include "cmdlist.h"
#include "fanboard.h"

#ifndef __USE_USB__
#include "serial.h"
#endif


//-----------------------------------------------------------------------------
//global variable
//-----------------------------------------------------------------------------
BYTE g_iic_address;

//-----------------------------------------------------------------------------
//function prototype
//-----------------------------------------------------------------------------
int do_fanboard_init();
int do_fanboard_setpwm();
int do_fanboard_setrpm();
int do_fanboard_getpwm();
int do_fanboard_getrpm();
int do_fanboard_getcurrent();
int do_fanboard_getvoltage();

//-----------------------------------------------------------------------------
//list for command
//-----------------------------------------------------------------------------
const struct command_name xdata fanboard_cmd[] = {
	{"select",      do_fanboard_init},
	{"setpwm",      do_fanboard_setpwm},
	{"setrpm",      do_fanboard_setrpm},
	{"getpwm",      do_fanboard_getpwm},
	{"getrpm",      do_fanboard_getrpm},
	{"getcurrent",  do_fanboard_getcurrent},
	{"getvoltage",  do_fanboard_getvoltage},
	{0, 0}
};

//-----------------------------------------------------------------------------
//command function param
//-----------------------------------------------------------------------------
//const struct command_param xdata fanboard_cmd_param[] = {
//	{0, 0}
//};


//-----------------------------------------------------------------------------
//extern function
//-----------------------------------------------------------------------------
extern int   mydef_strcasecmp(char *dst, char *src);
extern int (*lookup_command_func(struct command_name *pcmd,char * cmd_str))();
extern char *get_current_cmd(char * buff);
extern char *lookup_return_str(int ret_cmd);
extern int   lookup_return_val(struct command_param *pm, char * cmd_str);
extern struct command_list * add_to_retlist(char * cmd);
extern void (*fp_blinking)(unsigned char);

//-----------------------------------------------------------------------------
//EZUSB do_show_help
//-----------------------------------------------------------------------------
int do_show_help()
{
#ifndef __USE_USB__
    PRINTF_COM(USAGE_MSG_T);
    PRINTF_COM(USAGE_MSG_L);
    PRINTF_COM(USAGE_MSG_1);
    PRINTF_COM(USAGE_MSG_2);
    PRINTF_COM(USAGE_MSG_3);
    PRINTF_COM(USAGE_MSG_4);
    PRINTF_COM(USAGE_MSG_5);
    PRINTF_COM(USAGE_MSG_6);
    PRINTF_COM(USAGE_MSG_7);
    PRINTF_COM(USAGE_MSG_8);
    PRINTF_COM(USAGE_MSG_L);
#endif
    
    return RET_OK;
}

//=============================================================================-
//do_fanboard_entry
//=============================================================================-
int do_faboard_entry(char *cmd)
{
    int  (*cmd_func) ();
    int  ret=0;
        
    cmd_func=lookup_command_func(fanboard_cmd,cmd);
    if (cmd_func!=NULL) {
        ret=(*cmd_func)();
        return(ret);
    }
    return RET_ERROR;
}

//=============================================================================-
//do do_fanboard
//=============================================================================-
int do_fanboard_init()
{
    OEE = 0xFF; //IOE output
    IOE = 0;
    
    g_iic_address = FANBOARD_ADDR;
    return RET_OK;    
}


//=============================================================================-
//do_fanboard_setpwm
//SETPWM  CMD
//BYTE NO. | adr | B10 | B9  | B8  | B7  | B6  |       
//———————————————————————
//Data     | 30  | 01  | 10  | 00  | EE  | 00  |       
//———————————————————————
//         | SA+W|     |     |     | End CMD   |
//
//BYTE NO. | B5  | B4  | B3  | B2  | B1  | B0  |       
//—————————————————————————————————————————
//Data     | 30  | 01  | 00  | 78  | EE  | 00  |       
//—————————————————————————————————————————
//         | SA+W|     |     | PWM | END CMD   |
//=============================================================================-
int do_fanboard_setpwm()
{
    char param[MAX_CMD_LENGTH];
    int  val = 0;
    unsigned char xdata iic_dat[5];
    
    //PDEBUG("do_fanboard_setpwm:\r\n");
    memset (param, '\0', sizeof (param));
    if (get_current_cmd(param)==NULL) {
            return RET_ERROR;
    }
    
    val = strtol(param,NULL,10);
    if (val > 255 || val <0) {
            return RET_ERROR;
    }
    
    //write command to iic slave
    iic_dat[0] = 0x01;
    iic_dat[1] = 0x10;
    iic_dat[2] = 0x00;
    iic_dat[3] = 0xEE;
    iic_dat[4] = 0x00;
    EZUSB_WriteI2C(g_iic_address, 5, iic_dat);
    iic_dat[0] = 0x01;
    iic_dat[1] = 0x10;
    iic_dat[2] = val&0xFF;
    iic_dat[3] = 0xEE;
    iic_dat[4] = 0x00;
    EZUSB_WriteI2C(g_iic_address, 5, iic_dat);
    //EZUSB_WaitForEEPROMWrite(g_iic_address);

    //sprintf(param,"(%bX)",g_iic_address);
    //add_to_retlist(param);
    return RET_DONE;    
}

//=============================================================================-
//do_fanboard_setrpm
//SETRPM CMD
//BYTE NO. | adr | B0  | B1  | B2  | B3  | B4  |
//———————————————————————
//Data     | 30  | 01  | 10  | 01  | EE  | 00  |
//———————————————————————
//         | SA+W|     |     |     | END CMD   | 
//
//BYTE NO. | adr | B0  | B1  | B2  | B3  | B4 | B5 |
//—————————————————————————
//Data     | 30  | 01  | 18  | C0  | 27  | EE | 00 |
//—————————————————————————
//         | SA+W|     |     |RPM L|RMP H| END CMD |
//=============================================================================-
int do_fanboard_setrpm()
{
    char param[MAX_CMD_LENGTH];
    int  val = 0;
    unsigned char xdata iic_dat[6];
    
    //PDEBUG("do_fanboard_setrpm:\r\n");
    memset (param, '\0', sizeof (param));
    if (get_current_cmd(param)==NULL) {
            return RET_ERROR;
    }
    
    val = strtol(param,NULL,10);
    if (val > 18000 || val <0 ) {
            return RET_ERROR;
    }
    
    //write command to iic slave
    iic_dat[0] = 0x01;
    iic_dat[1] = 0x10;
    iic_dat[2] = 0x01;
    iic_dat[3] = 0xEE;
    iic_dat[4] = 0x00;
    EZUSB_WriteI2C(g_iic_address, 5, iic_dat);
    iic_dat[0] = 0x01;
    iic_dat[1] = 0x18;
    iic_dat[2] = val&0xFF;
    iic_dat[3] = (val>>8)&0xFF;
    iic_dat[4] = 0xEE;
    iic_dat[5] = 0x00;
    EZUSB_WriteI2C(g_iic_address, 6, iic_dat);

    //sprintf(param,"(%bX)",g_iic_address);
    //add_to_retlist(param);
    return RET_DONE;    
}

//=============================================================================-
//do_fanboard_getpwm
//GET INFO
//BYTE NO. | adr |B0 |B1 | 
//————————————
//Data     | 30  |01 |00 | 
//————————————
//         |SA+W |   |   |

//BYTE NO. | adr |B0 |B1 |B2 |B3 |B4   |B5   |B6 |B7 |B8 |B9 |B10    | B11   |B12|B13|B14|B15|B16| B17| B18|
//—————————————————————————————————————————————————————
//Data     | 31  |78 |00 |A1 |03 |28   |23   |0A |FF |00 |00 |2D     | 79    |CD |02 |07 |04 |09 | EE | 00 |
//—————————————————————————————————————————————————————
//         |SA+R |PWM|   |   |   |RPM L|RMP H|   |   |   |   |CURRENT|VOLTAGE|   |   |   |   |   | END CMD |
//
//其中:CURRENT=實際電流*10(ma)
//      VOLTAGE=實際電壓*10(v)
//=============================================================================-
int do_fanboard_getpwm()
{
    char param[MAX_CMD_LENGTH];
    unsigned char xdata iic_dat[20];
    int ret;
    
    //PDEBUG("do_fanboard_getpwm:\r\n");
    //write command to iic slave
    iic_dat[0] = 0x01;
    iic_dat[1] = 0x10;
    EZUSB_WriteI2C(g_iic_address, 2, iic_dat);

    //read infor    
    EZUSB_ReadI2C(g_iic_address, 19, iic_dat);
    
    //RPM
    ret = iic_dat[0];
    sprintf(param," %d",ret);
    add_to_retlist(param);

    return RET_DONE;    
}

//=============================================================================-
//do_fanboard_getrpm
//GET INFO
//BYTE NO. | adr |B0 |B1 | 
//————————————
//Data     | 30  |01 |00 | 
//————————————
//         |SA+W |   |   |

//BYTE NO. | adr |B0 |B1 |B2 |B3 |B4   |B5   |B6 |B7 |B8 |B9 |B10    | B11   |B12|B13|B14|B15|B16| B17| B18|
//—————————————————————————————————————————————————————
//Data     | 31  |78 |00 |A1 |03 |28   |23   |0A |FF |00 |00 |2D     | 79    |CD |02 |07 |04 |09 | EE | 00 |
//—————————————————————————————————————————————————————
//         |SA+R |PWM|   |   |   |RPM L|RMP H|   |   |   |   |CURRENT|VOLTAGE|   |   |   |   |   | END CMD |
//
//其中:CURRENT=實際電流*10(ma)
//      VOLTAGE=實際電壓*10(v)
//=============================================================================-
int do_fanboard_getrpm()
{
    char param[MAX_CMD_LENGTH];
    unsigned char xdata iic_dat[20];
    int ret;
    
    //PDEBUG("do_fanboard_getrpm:\r\n");
    //write command to iic slave
    iic_dat[0] = 0x01;
    iic_dat[1] = 0x10;
    EZUSB_WriteI2C(g_iic_address, 2, iic_dat);

    //read infor    
    EZUSB_ReadI2C(g_iic_address, 19, iic_dat);
    
    //RPM
    ret = iic_dat[5];
    ret = (ret <<8 ) | iic_dat[4];
    sprintf(param," %d",ret);
    add_to_retlist(param);

    return RET_DONE;    
  
}

//=============================================================================-
//do_fanboard_getcurrent
//GET INFO
//BYTE NO. | adr |B0 |B1 | 
//————————————
//Data     | 30  |01 |00 | 
//————————————
//         |SA+W |   |   |

//BYTE NO. | adr |B0 |B1 |B2 |B3 |B4   |B5   |B6 |B7 |B8 |B9 |B10    | B11   |B12|B13|B14|B15|B16| B17| B18|
//—————————————————————————————————————————————————————
//Data     | 31  |78 |00 |A1 |03 |28   |23   |0A |FF |00 |00 |2D     | 79    |CD |02 |07 |04 |09 | EE | 00 |
//—————————————————————————————————————————————————————
//         |SA+R |PWM|   |   |   |RPM L|RMP H|   |   |   |   |CURRENT|VOLTAGE|   |   |   |   |   | END CMD |
//
//其中:CURRENT=實際電流*10(ma)
//      VOLTAGE=實際電壓*10(v)
//=============================================================================-
int do_fanboard_getcurrent()
{
    char param[MAX_CMD_LENGTH];
    unsigned char xdata iic_dat[20];
    int ret;
    
    //PDEBUG("do_fanboard_getcurrent:\r\n");
    //write command to iic slave
    iic_dat[0] = 0x01;
    iic_dat[1] = 0x10;
    EZUSB_WriteI2C(g_iic_address, 2, iic_dat);

    //read infor    
    EZUSB_ReadI2C(g_iic_address, 19, iic_dat);
    
    //voltage
    ret = iic_dat[10]*10;
    sprintf(param," %d(ma)",ret);
    add_to_retlist(param);

    return RET_DONE;    
}

//=============================================================================-
//do_fanboard_getvoltage
//GET INFO
//BYTE NO. | adr |B0 |B1 | 
//————————————
//Data     | 30  |01 |00 | 
//————————————
//         |SA+W |   |   |

//BYTE NO. | adr |B0 |B1 |B2 |B3 |B4   |B5   |B6 |B7 |B8 |B9 |B10    | B11   |B12|B13|B14|B15|B16| B17| B18|
//—————————————————————————————————————————————————————
//Data     | 31  |78 |00 |A1 |03 |28   |23   |0A |FF |00 |00 |2D     | 79    |CD |02 |07 |04 |09 | EE | 00 |
//—————————————————————————————————————————————————————
//         |SA+R |PWM|   |   |   |RPM L|RMP H|   |   |   |   |CURRENT|VOLTAGE|   |   |   |   |   | END CMD |
//
//其中:CURRENT=實際電流*10(ma)
//      VOLTAGE=實際電壓*10(v)
//=============================================================================-
int do_fanboard_getvoltage()
{
    char param[MAX_CMD_LENGTH];
    unsigned char xdata iic_dat[20];
    int ret;
    
    //PDEBUG("do_fanboard_getvoltage:\r\n");
    //write command to iic slave
    iic_dat[0] = 0x01;
    iic_dat[1] = 0x10;
    EZUSB_WriteI2C(g_iic_address, 2, iic_dat);

    //read infor    
    EZUSB_ReadI2C(g_iic_address, 19, iic_dat);
    
    //voltage
    ret = iic_dat[11]*10;
    sprintf(param," %d(v)",ret);
    add_to_retlist(param);

    return RET_DONE;    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -