/* name: 硬件SPI.c writer: xiaowu date: 2010/11/3 **************************************** ** Copyright (C) 深圳蓝色飞舞科技 2008-2010 ** ** Web: http://www.lanwind.com ** **************************************** ** USB Host File Module @PB375A ** ** AVR ATMega8L ** ** 深圳蓝色飞舞科技有限公司 ** ** 联系方式:0755-29739852 ** 技术email:xiaowuyeah@163.com ** discription: | | | | |ATMEGA8L | | PB375A | | PC1|---> |CS | | PB5|---> |SCK | | PB3|---> |SDI | | PB4|<--- |SDO | |________ | |____________| ATMEGA8L 的硬件SPI的SCK MOSI MISO分别和PB375A的SCK SDI SDO连接 PC1和CS连接 该例程使用了ATMEGA8L的硬件SPI,同时使用一个IO口来模拟CS线 软件流程: 初始化IO口 检测U盘是否存在 新建文件 写入数据 关闭文件 ========================================================================================================== 移植说明: 对于不同的单片机的硬件SPI,你需要改动的函数有: 初始化端口 initPort() 需要修改里面初始化CS脚的输出 初始化SPI void SPI_MasterInit(void) 不同的单片机初始化SPI,注意控制SPI的速率尽量低点 SPI发数据 void SPI_MasterTransmit(char cData) 不同的单片机的SPI发送操作不一样 SPI读数据 unsigned char SPI_Read(void) 不同的单片机的SPI接收操作不一样 #define PB375_CS_SET PORTC |= (1< #define PB375_VER 0x28 /* 当前模块版本 */ /* ********************************************************************************************************************* */ /* 返回的操作状态码 */ #define ERR_DISK_DISCON 0x82 /* 检测到USB设备连接事件,磁盘已经断开,或者磁盘尚未连接 */ /* 最终状态码 */ #define ERR_SUCCESS 0x00 /* 操作成功 */ /* 外部命令码 */ #define CMD_FileOpen 0x64 /* 打开文件 */ #define CMD_FileCreate 0x65 /* 新建文件并打开,如果文件已经存在则先删除后再新建 */ #define CMD_FileErase 0x66 /* 删除文件并关闭 */ #define CMD_FileClose 0x67 /* 关闭当前文件 */ #define CMD_DiskReady 0x71 /* 查询磁盘是否准备好 */ #define CMD_ByteLocate 0x7A /* 以字节为单位移动当前文件指针 */ #define CMD_ByteRead 0x7B /* 以字节为单位从当前文件读取数据块 */ #define CMD_ByteWrite 0x7C /* 以字节为单位向当前文件写入数据块 */ #define PB375_CS_SET PORTC |= (1<