标题:
刚开始接触代码,寻求MC33972或MC33993的驱动程序以借鉴!
[打印本页]
作者:
guoguoer
时间:
2006-6-29 21:21
标题:
刚开始接触代码,寻求MC33972或MC33993的驱动程序以借鉴!
我刚刚接触写代码,现在要编33972的驱动程序,片子的工作原理已经懂了,只是不知道怎么写驱动,不知道怎么入门,想找个972的驱动看看,参考一下,哪位好心人有帮帮忙吧!十分感激!!谢谢!
作者:
zhwdy81
时间:
2006-6-30 14:58
这是我得初始化程序
作者:
zhwdy81
时间:
2006-6-30 15:05
不好意思,刚才忘记上传了,嘿嘿
顺便说一句,论坛的特殊符号处理好像不怎么样,把程序直接贴进来老出错
http://bbs.chinaecnet.com/uploadImages/MC33993.doc
作者:
xiang1912
时间:
2006-6-30 20:31
zhwdy81,你好!
最近在做33993的片子,有点麻烦,向你请教!
可否在中断中读取开关的状态?如何读?
怎么分辨是哪一开关动作了呢?
小弟,非常感谢!
作者:
xiang1912
时间:
2006-6-30 22:11
是不是通过中断标志位就可以知道某个开关状态变化了呢?
急!!!!
作者:
guoguoer
时间:
2006-7-3 14:41
标题:
谢谢zhwdy81! 我还有些不明白!
zhwdy81,我看了你的33993的程序,有一点还是不懂,就是spi进行读写时不是很明白:
SPDR = data1; // 发送第一字节
while((SPSCR&0x80)==0); // 等待接收寄存器满
SP_status.Byte = SPDR; // 读取 状态
SPDR = data2; // 发送第二字节
while((SPSCR&0x80)==0); // 等待接收寄存器满
SGh_status.Byte = SPDR; // 读取 状态
SPDR = data3; // 发送第三字节
while((SPSCR&0x80)==0); // 等待接收寄存器满
SGl_status.Byte = SPDR; // 读取 状态
SP_status.Byte=SP_status.Byte<<2;
SP_status.Bit.BIT0=SGh_status.Bit.BIT6;
SP_status.Bit.BIT1=SGh_status.Bit.BIT7;
SGh_status.Bit.BIT6=0;
SGh_status.Bit.BIT7=0;
对于上段程序不是很明白,尤其是下面的部分,能否解释一下呢,谢谢! 还有你的程序没有涉及到时钟以及spi寄存器主从设置的问题,在这里不用设置吗?还有你上面的程序是从哪到哪得读写呢? 由33972到主单片机还是由单片机到33972呢?
还有一点,我现在用gz60作主单片机,其中有几个设备要通过spi与gz60通信,而这几个设备分别用不同的io口代替cs\选通,那我还能用spi的寄存器吗,如果不能用的话我刚如何处理呢?希望给与答复,谢谢![em24][em24]
作者:
zhwdy81
时间:
2006-7-3 14:48
只要有不同的cs就可以了,spi照样可以用的啊
读取很简单的
RD33993(0x00,0x00,0x00);
RD33993(0x00,0x00,0x00);
然后根据下面的位对应引脚就可以了
//SP_status: SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0
//SGh_status: NC NC SG13 SG12 SG11 SG10 SG9 SG8
//SGl_status: SG7 SG6 SG5 SG4 SG3 SG2 SG1
作者:
guoguoer
时间:
2006-7-3 15:51
标题:
zhwdy81!谢谢你的回复,对spi通信我还是不很明白!
对于spi数据的收发读取我还是不明白,你的初始化寄存器里对寄存器都定义了,但是对于最后的SO Response Will Always Send 没有定义阿,是不是不用定义呢还是什么其它的原因? 我对spi通信还是比较模糊,spi通信时,一些参数不用提前初始化吗?spcr、spscr、spdr这三个寄存器都不用设置吗?
还有一点,我的用多个io口选通各个spi从设备,有人说就不能用spi的寄存器了,只能通过软件按照时钟电平高低,根据高电平收低电平发或低电平收高电平发的时序,一位一位的传输数据是这样子的吗?
忘回复!谢谢! 请问您有MSN吗?那样我可以直接根您探讨了!谢谢![em19][em19]
作者:
xiang1912
时间:
2006-7-3 16:07
guoguoer,你好.
908GZ60的资料,你看了吗?
SPCR SPSCR寄存器应该要设置的,要不你怎么进行SPI通信呢?
SPCR_SPE=0;
SPCR_SPMSTR=1; //主机模式;
SPSCR_SPR0=0;
SPSCR_SPR1=0; //BD=2;
SPCR_CPOL=0;
SPCR_CPHA=1; //下降沿采样数据;
SPCR_SPE=1; //使能SPI
这是一种设置方式供参考.
作者:
guoguoer
时间:
2006-7-3 21:00
标题:
我看了GZ60的资料了!
我看gz60的资料了,只不过是,我现在不是只有一个从设备,而是有多个从设备都要用spi通信,我用io口选通每个从设备,这样的话只要有cs低,CS低然后在clk的上升沿和下降沿写入和读取数据,在cs高电平停止, 现在我只有一个用cs选通,其余的都用io口选通,这样的话,用spi寄存器是自动发送,cs不用人操作,那我的其他从设备怎么工作? 这样不就不能用寄存器设置了,直接按照spi的工作时序来写代码,是不是这样啊?哪位高人指点一下!!万分感激!!
[em19][em19][em24][em24]
作者:
strongchen
时间:
2006-7-4 11:58
如果是多个从设备的话,那么每个从设备的/SS脚都应有一个IO口来控制。主设备的/SS脚必须维持高电平或作为普通IO口使用,不能用来选通某个从设备。
作者:
guoguoer
时间:
2006-7-6 10:14
我硬件设计里用了主设备的ss脚,用它选通一个从设备,其他的从设备都用普通io口选通,那我把主设备的SS作为普通io口用然后选通从设备可以吗? 如果用多个io口选通从设备,那通信的时候,spi的寄存器还可不可以用呢?
作者:
zhwdy81
时间:
2006-7-10 13:50
应该可以得吧
就是用不同的cs来控制的啊
作者:
guoguoer
时间:
2006-7-24 22:42
to:strongchen
“如果是多个从设备的话,那么每个从设备的/SS脚都应有一个IO口来控制。主设备的/SS脚必须维持高电平或作为普通IO口使用,不能用来选通某个从设备。”
你说每个从设备的ss脚应有一个io口控制,主设备的ss要维持在高电平或用作io口,不能选通从设备,既然主设备的ss可能用作普通io了,那当然可以用它来选通某个从设备了,是不是这样呢,版主说的是不是矛盾了呢? 谢谢回复!
作者:
strongchen
时间:
2006-7-25 09:29
用作普通I/O口时,它就已经不是/SS口了,这时它与SPI模块的联系已经断开。
作者:
guoguoer
时间:
2006-7-25 11:44
与spi的联系断开,可以这样用吧,是吗?把ss作为普通io口用来选通一个从设备,根用其他io选通其他从设备一样,是不是这样呢?
作者:
strongchen
时间:
2006-7-25 15:18
当然可以。但相应的寄存器控制位要进行设置,将SS与SPI模块断开。
作者:
strongchen
时间:
2006-7-25 15:19
当然可以。但相应的寄存器控制位要进行设置,将SS与SPI模块断开。
作者:
guoguoer
时间:
2006-7-25 15:28
恩,知道的,谢谢版主!呵呵
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0