WCH: 你好! 我公司现用CH375芯片做一个数据采集的项目,主要是通过单片机接收串口的数据然后利用CH375存储到U盘。 现在的问题是:贵公司提供的AVR子程序库是基于ATMEGA128的应用。而我现在用的芯片是ATMEGA32,在加载子程序库时,提示内存不够。 我想问下。可否提供基于ATMEGA32的子程序库,或者可以有什么好的方法精减子程序库,在使用外部子程序库的时候,为什么提示函数没有定义,哪里可以下载外部子程序库的调用函数。 谢谢!!!
首先你下载CH375EVT.ZIP,参考CH375HF.PDF这个文档。 可以把磁盘缓冲区定义小一些(512)。 可能是库没有正确的加到工程里面。请参考: /bbs/View.asp?S=101&I=1511
RAM应该是够用的,你仔细看下你用到了哪些RAM变量,还有就是DISK-BASE-BUF-LEN的定义是多大的?
因为ATMEGA32相对ATMEGA64价格便宜很多,我也想用ATMEGA32 来控制CH375,但担心RAM 和FALSH 不够用,目前正在用ATMEGA64L调试,RAM 已用了2480字节,FALSH 也占22K,而沮程序还得增添。 我是只用到CH375来读取U盘文件,每次读取一个扇区512字节, 想问一下能不能把与CH375相关程序量降到10K以下,越少越好,占用RAM降到1K以下?
程序量估计减少不了,RAM在1K以下是可以的,或者你可以使用CH376芯片,这个芯片自带文件系统,读取U盘的速度和CH375差不多,需要RAM最少10几个字节,FALSH在2K左右。引脚并口连接的话基本兼容
另外RAM占用主要有两个 1:DISK_BASE_BUF,一般为512个字节,如果用CH375,这是必须的,如果用376则不需要 2:文件缓冲区,(FILE_DATA_BUF),主要和你要求的速度有关,如果要求速度很低,则可以用字节模式,节省RAM。这个缓冲对376来说也是需要的。 CH375的相关程序压缩到10K以下是很困难的。
谢谢大家的回贴。我找到了问题,不知道为什么我使用下面的位定义的时候加载库文件就会通不过,我把标志为改为字节方式之后便可以了。编译能过之后提示内存占了67%。。。 建议很用字节模式读写U盘。这样占RAM空间大概1K多点。反正我再定义一个1024的数组就超出ATMEGA32的RAM了。希望WCH能够把库文件的分配空间再精减些。谢谢!!
union { struct { unsigned BIT0 :1; unsigned BIT2 :1; unsigned BIT3 :1; unsigned BIT3 :1; unsigned BIT4 :1; unsigned BIT5 :1; unsigned BIT6 :1; unsigned BIT7 :1; }ONEBIT1;
uchar STATUS1;
}FLAG1;
已经很精简了。在精简的同时我们也要考虑兼容性的问题。