
1.
第1、29、30脚必须通过10K电阻接地。
2.
第8脚必须接地。
3.
11、12或27、18任意接一组电源就可以。
4.
驱动步进电机的L298的相线必须接正确,否则电机肯定不转
5.
其它没说明的引脚不用管。
6.
在连接、测试时千万不要用手去接触MMC芯片的任何引脚,否则输出不了信号。
7.
一旦过流保护被启动,芯片必须重新上电后才可恢复正常工作,如果用手去碰MMC的第1、29、30脚则过流保护立即启动。
8.
强烈建议先不要直接接L298,先用示波器查看MMC信号输出的波形,然后再接L298,如果波形都没,那什么也出不来。
#include sbit SPI_DI =P0^1; //MMC数据输入 sbit SPI_DO =P0^0;//MMC数据输出,可不接 sbit SPI_SCL=P0^2;//时钟线 void delay(unsigned int time) { while(time--); } void Write_Byte(unsigned char value) //********************************************************** ****************** { unsigned char i; for (i=0;i<8;i++) { if (((value>>(7-i))&0x01)==0x01) SPI_DI=1; else SPI_DI=0; SPI_SCL=0; delay(5); //必须要加延时,否则会因为操作太快而不响应。 SPI_SCL=1; delay(5); //必须要加延时,否则会因为操作太快而不响应。 } } //以下为读数据函数,不用读MMC,所以不用管,供参考用 unsigned char Read_Byte() { unsigned char temp=0; unsigned char i; for (i=0;i<8;i++) { SPI_DO=1; SPI_SCL=0; delay(5); temp=(temp<<1)+(unsigned char)SPI_DO; SPI_SCL=1; delay(5); } return (temp); } void main() { delay(50);//首次上电先延时一会儿 Write_Byte(0x50);//设置第一通道配置寄存器 Write_Byte(0x80);//配置第一通道 /* 一定要先设计配置字,再设计频率字,否则不出来,不要看管方资料。 */ delay(5); Write_Byte(0x51);// 设置第一通道频率寄存器 Write_Byte(49); //送入频率字,49为20hz. /* 频率字的计算方法如下,不要看管方给的资料,否则计算错误: 设你想要的频率为F,频率字为FC则用以下公式计算 F*4=4000/(FC+1) 如:我想要20Hz,则20*4=4000/(FC+1) 求得:FC=49, */ Write_Byte(0x54);//设置第二通道 Write_Byte(0x80); delay(5); Write_Byte(0x55); Write_Byte(24); /* 第三通道固定为1Khz,怎么设置都改不过来,大家不要用第三通道了,就用第一二通道就足够了。*/ delay(50); while(1); }转载请注明出自大学生电子设计联盟 http://www.nuedc.net.cn/,本贴地址:http://www.nuedc.net.cn/thread-5635-1-1.html
