主要就是开硬件SPI来驱动24L01。
这个是经历了软仿SPI稳定两片24L01确定能正常运行两两通信了之后,才开启硬件SPI来提高速度的。
这个MCU小弟也是用了2,3年了,交叉开关配置和外设初始化在配合02X手册的情况下
进行配置应该是没什么问题的。
可是现在问题来了。
配置好硬件SPI后其实速度没提高多少,倒是折腾出了一个奇怪的现象:
24L01收端的SPI0DAT(硬件SPI的收发寄存器)无论如何设置,读出的数据都是0XFF,直接导致24L01里面
读寄存器的值全是0XFF,包括24L01的收发状态寄存器也是。
所以24L01就“自收发”了、、、、
下面给出SPI0的初始化配置和读写函数:
SPI0_INIT()
{ SPI0CN=0X03;
SPI0CFG=0X07;
SPI0CLK=0X03;(好像是这个,值没记错,名字可能写错,配置时钟速率的,公司不能上网,保密单位。。你懂 得。。)
EIE1 &= ~0X01;
}
uchar SPI_WR(uchar data)
{
uchar temp;
SPI0DAT=data;
while(!SPIF);
SPIF=0;
temp= SPI0DAT;
return temp;
}
以上,折腾2天了,网上例程翻了不少,新华龙原版例程都翻烂了,哑元的问题也注意到了(读时写0或FF)
示波器波形也看了(这个有些怪,SCK波形不是很好,低电平保持得有些乱,但是吻合),现在不知道该怎么面对这个工程。。。。。有些凌乱,看到这里的朋友还多多包涵,,,,
不知道有没有前辈遇到过,希望能指点一二,小弟真的感激不尽啊~~ |