共有回帖数 0 个
-
* C/C++资讯站 www.ccbeta.net
* Authour: flyreally
*
*电子设计大赛一道题目要求必须使用NEC的电机驱动芯片,
*芯片跟单片机通过UART或者SPI通信,所以写了这个程序
*
*在网上找了点SPI的程序,发现其中可能有些错误,反正
*和我的最终程序不一样,我是严格按照DATASHEET写的,通信成功
*/
#include hidef.h /* common defines and macros */
#include MC9S12XS128.h /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
//SPI写一个字节
void SPI_Write_Byte(ulong val)
{
unsigned int a;
while (!(SPI0SR_SPTEF)); //等待数据寄存器清空
SPI0DR = val; //将数值写入寄存器
a = SPI0DRL; //对SPI0DRL进行一次读操作以清除标志位
while(SPI0SR_SPIF); //确定清除标志位
}
//SPI读一个字节
ulong SPI_Read_Byte(void)
{
while(!(SPI0SR_SPIF));
return SPI0DR;
}
//SPI初始化,速率50kbps
void SPI_Init(void)
{
MODRR = 0x00;
SPI0CR1 = 0x50; //CPOL,CPHA一致,同为零
/*必须注意这,时序在SPI通信中很重要,M端和S端的时序一定要一样, 否则不能通信,具体的时序由硬件决定*/
SPI0CR2 = 0x48; //16位传输,MOFEN置零
//BR=busclk/((SPPR + 1)· 2^(SPR + 1))=16000/(5*8)=50k
SPI0BR = 0x47;
}
楼主 2016-04-21 09:22 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知