📄 ch375h.c
字号:
//=================================================================================================
//*************************************************************************************************
// Module Name : CH375H.C
// Device object:
// Create date : 2005-11-11
// Modify date : 2005-11-11
// Description : USB 1.1 Host for CH375
// USB 2.0 Host for CH375A
// Author : Li yuanzheng
// Version : V1.0
//*************************************************************************************************
//=================================================================================================
//
//-------------------------------------------------------------------------------------------------
// Includes
//-------------------------------------------------------------------------------------------------
// 未调试过
//
#include <regx52.h> // SFR declarations
#define CH375HF_DEFINITION 1 // Definition of the assign
#include "CH375H.H"
//****************************************************************************************************************
//----------------------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序
//----------------------------------------------------------------------------------------------------------------
//****************************************************************************************************************
//
//=================================================================================================
// CH375与MCU以并口方式连接
//=================================================================================================
//
#if MCUConnectMode == 1
//-------------------------------------------------------------------------------------------------
// 总线I/O 的单片机
#if MCUBusIOMode == 1
//-------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,向CH375写命令,最小周期为4uS,否则之前之后各延时2uS
void xWriteCH375Cmd( UINT8 mCmd )
{
mDelayuS( 2 ); // 至少延时1uS
CH375_CMD_PORT = mCmd;
mDelayuS( 2 ); // 至少延时2uS
}
//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,向CH375写数据,最小周期为1.5uS,否则之后延时1.5uS
void xWriteCH375Data( UINT8 mData )
{
CH375_DAT_PORT = mData;
mDelayuS( 2 ); // 至少延时2uS
}
//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,从CH375读数据,最小周期为1.5uS,否则之前延时1.5uS
UINT8 xReadCH375Data( void )
{
UINT8 mData;
mDelayuS( 2 ); // 至少延时1uS
mData = CH375_DAT_PORT;
return( mData );
}
//-------------------------------------------------------------------------------------------------
// 非总线I/O 的单片机
#else
//-------------------------------------------------------------------------------------------------
//
//-------------------------------------------------------------------------------------------------
// 由于使用通用I/O模块并口读写时序,所以进行初始化
void CH375_PORT_INIT( void )
{
CH375_CS = 1;
CH375_WR = 1;
CH375_RD = 1;
CH375_A0 = 0;
PORT = 0xFF; // 并口输入
}
//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,向CH375写命令,最小周期为4uS,否则之前之后各延时2uS
void xWriteCH375Cmd( UINT8 mCmd )
{
mDelayuS( 2 ); // 至少延时1uS
PORT = mCmd; // 向CH375的并口输出数据
CH375_A0 = 1;
CH375_CS = 0;
CH375_WR = 0; // 输出有效写控制信号, 写CH375芯片的命令端口
CH375_CS = 0; // 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS
CH375_WR = 1; // 输出无效的控制信号, 完成操作CH375芯片
CH375_CS = 1;
CH375_A0 = 0;
PORT = 0xFF; // 禁止数据输出
mDelayuS( 2 ); // 至少延时2uS
}
//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,向CH375写数据,最小周期为1.5uS,否则之后延时1.5uS
void xWriteCH375Data( UINT8 mData )
{
PORT = mData; // 向CH375的并口输出数据
CH375_A0 = 0;
CH375_CS = 0;
CH375_WR = 0; // 输出有效写控制信号, 写CH375芯片的数据端口
CH375_CS = 0; // 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS
CH375_WR = 1; // 输出无效的控制信号, 完成操作CH375芯片
CH375_CS = 1;
PORT = 0xFF; // 禁止数据输出
mDelayuS( 2 ); // 至少延时2uS
}
//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,从CH375读数据,最小周期为1.5uS,否则之前延时1.5uS
UINT8 xReadCH375Data( void )
{
UINT8 mData;
mDelayuS( 2 ); // 至少延时1uS
PORT = 0xFF; // 输入
CH375_A0 = 0;
CH375_CS = 0;
CH375_RD = 0; // 输出有效写控制信号, 读CH375芯片的数据端口
CH375_CS = 0; // 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS
mData = PORT; // 从CH375的并口输入数据
CH375_RD = 1; // 输出无效的控制信号, 完成操作CH375芯片
CH375_CS = 1;
return( mData );
}
#endif
//=================================================================================================
// CH375与MCU以串口方式连接
//=================================================================================================
//
#else
//-------------------------------------------------------------------------------------------------
// 设置波特率和其它串口参数
// 设置串口通讯波特率,为了满足在2mS传输64字节的要求,波特率应该大于350Kbps,
// 如果串口波特率较低,不能满足在2mS传输64字节的要求,那么对于有些U盘将无法工作或者导致数据丢失
void CH375_PORT_INIT( void )
{
SCON = 0xD0; // 设置串口为9位数据
}
//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,向CH375写命令
void xWriteCH375Cmd( UINT8 mCmd )
{
TI = 0;
TB8 = 1;
SBUF = mCmd;
while ( TI == 0 );
}
//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,向CH375写数据
void xWriteCH375Data( UINT8 mData )
{
TI = 0;
TB8 = 0;
SBUF = mData;
while ( TI == 0 );
}
//-------------------------------------------------------------------------------------------------
// 外部定义的被CH375程序库调用的子程序,从CH375读数据
UINT8 xReadCH375Data( void )
{
while ( RI == 0 );
RI = 0;
return( SBUF );
}
#endif
//****************************************************************************************************************
//----------------------------------------------------------------------------------------------------------------
// 自行编写的子程序,用以取代 CH375HF?.H 中的提供的默认子程序
//----------------------------------------------------------------------------------------------------------------
//****************************************************************************************************************
//
//-------------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -