📄 isp1301.c
字号:
/*****************************Copyright(c)****************************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**------File Info-----------------------------------------------------------------------------------------
** File Name: ISP1301.c
** Latest modified Date: 2007-10-19
** Latest Version: V1.0
** Description: ISP1301.c, ISP1301的相关操作函数
**
**--------------------------------------------------------------------------------------------------------
** Created By: Longsui Wu
** Created date: 2007-10-19
** Version: V1.0
** Descriptions: 初始版本
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Description:
**
*********************************************************************************************************/
#include "OTGIncludes.h"
USB_INT16U __isp1301VendorIdRead (void);
USB_INT16U __isp1301ProductIdRead (void);
/*********************************************************************************************************
** Function name: __isp1301Init
** Descriptions: ISP1301初始化, 此初始化结合开发板而设计
** input parameters: None
** output parameters: None
** Returned value: TRUE : 操作成功, FALSE : 操作失败
*********************************************************************************************************/
USB_BOOL __isp1301Init (void)
{
if (__isp1301VendorIdRead() != 0x04CC) {
return FALSE;
}
if (__isp1301ProductIdRead() != 0x1301) {
return FALSE;
}
__isp1301DPPURRemove();
__isp1301SetModeDAT_SE0();
__isp1301SetSpdSuspCtrl();
__isp1301SetFullSpeed();
return TRUE;
}
/*********************************************************************************************************
** Function name: __isp1301Init
** Descriptions: ISP1301初始化, 此初始化结合开发板而设计
** input parameters: None
** output parameters: None
** Returned value: TRUE : 操作成功, FALSE : 操作失败
*********************************************************************************************************/
USB_INT16U __isp1301VendorIdRead (void)
{
USB_INT16U usId = 0;
USB_INT8U ucTmp;
ucTmp = __isp1301Read(__ISP1301_VENDOR_ID + 1);
usId = (USB_INT16U)(ucTmp << 8);
ucTmp = __isp1301Read(__ISP1301_VENDOR_ID);
usId = (USB_INT16U)(usId + ucTmp);
return usId;
}
/*********************************************************************************************************
** Function name: __isp1301Init
** Descriptions: ISP1301初始化, 此初始化结合开发板而设计
** input parameters: None
** output parameters: None
** Returned value: TRUE : 操作成功, FALSE : 操作失败
*********************************************************************************************************/
USB_INT16U __isp1301ProductIdRead (void)
{
USB_INT16U usId = 0;
USB_INT16U ucTmp;
ucTmp = __isp1301Read(__ISP1301_PRODUCT_ID + 1);
usId = (USB_INT16U)(ucTmp << 8);
ucTmp = __isp1301Read(__ISP1301_PRODUCT_ID);
usId = (USB_INT16U)(usId + ucTmp);
return usId;
}
/*********************************************************************************************************
** Function name: __usbI2cWrite
** Descriptions: 通过I2C向ISP1301发送数据
** input parameters: pusData 待发送数据缓冲区
** ucLength 等发送数据长度,通常为3
** output parameters: None
** Returned value: TRUE : 操作成功, FALSE : 操作失败
*********************************************************************************************************/
USB_BOOL __usbI2cWrite (const USB_INT16U *pusData, USB_INT8U ucLength)
{
USB_INT8U i;
for (i = 0; i< ucLength; i++) {
OTG_I2C_TX = *(pusData + i);
while (OTG_I2C_STS & __ISP1301_TFF); /* 如果I2C发送 FIFO 满,则等待 */
}
while (!(OTG_I2C_STS & __USB_TDI)); /* 等待发送完毕 */
OTG_I2C_STS = __USB_TDI; /* 清除标志位 */
return TRUE;
}
/*********************************************************************************************************
** Function name: __isp1301Write
** Descriptions: 通过I2C向ISP1301写数据
** input parameters: ucReg 寄存器地址
** ucRegBit 寄存器中的位
** output parameters: None
** Returned value: TRUE : 操作成功, FALSE : 操作失败
*********************************************************************************************************/
USB_BOOL __isp1301Write (USB_INT8U ucReg, USB_INT8U ucRegBit)
{
USB_INT32U i = 0xffff;
OTG_I2C_TX = __ISP1301_ADDR_WRITE | __USB_I2C_START;
OTG_I2C_TX = ucReg;
OTG_I2C_TX = (USB_INT16U)(ucRegBit | __USB_I2C_STOP);
while ((!(OTG_I2C_STS & __USB_TDI)) && --i); /* 等待发送完毕 */
OTG_I2C_STS = __USB_TDI; /* 清除标志位 */
return (USB_BOOL)(i != 0);
}
/*********************************************************************************************************
** Function name: __isp1301Read
** Descriptions: 通过I2C读取ISP1301单个寄存器数据
** input parameters: ucReg 寄存器地址
** output parameters: None
** Returned value: 读取到的寄存器值
*********************************************************************************************************/
USB_INT8U __isp1301Read (USB_INT8U ucReg)
{
OTG_I2C_TX = __ISP1301_ADDR_WRITE | __USB_I2C_START;
OTG_I2C_TX = ucReg;
OTG_I2C_TX = __ISP1301_ADDR_READ | __USB_I2C_START;
OTG_I2C_TX = __USB_I2C_STOP;
while (!(OTG_I2C_STS & __USB_TDI)); /* 等待发送完毕 */
OTG_I2C_STS = __USB_TDI; /* 清除标志位 */
while (OTG_I2C_STS & __ISP1301_RFE); /* 等待FIFO不空 */
return OTG_I2C_RX;
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -