您好
现在要把2553写成UART to SPI(slave)的一个转换程式,但却碰到了一个问题。
SPI Master端也是用 2553完成的。
状况是Slave端的2553一直没办法读到Master发送过来的SPI data,读出的值都为0x00。
经过一些测试后,发现在slave端读取的SPI master 送的CLK是有问题的。
索性就写了一段小程式来看看是哪里有问题,如下:
///////////////////////////////////////////////////////////////////////////
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
DCOCTL = CALDCO_16MHZ;
BCSCTL1 = CALBC1_16MHZ;
while(1)
{
P3DIR &= ~SE_CK;
P3REN &= ~SE_CK;
P3OUT &= ~SE_CK;
P1DIR |= SE_MOSI;
P1REN |= SE_MOSI;
P1OUT |= SE_MOSI;
while(1)
{
if(P3IN & SE_CK)
{
P1OUT |=SE_MOSI;
}
else
{
P1OUT &=~SE_MOSI;
}
DELAY_NOPS(3);
}
}
}
///////////////////////////////////////////////////////////////////////////
这段程式的功能是让 SE_MOSI 的状态等于 SE_CK。
当我使用手动的方式去改变SE_CK的状态,接到电源或GND。SE_MOSI皆可以正常的跟著转态。
但问题就这样发生了...
SPI master送出100KHz CLK到SE_CK ,SE_MOSI却不会产生出这个100KHz的波形。
看到的状况是维持在Low,完全不会动作!
这是为什么呢?
此帖出自
小平头技术问答
一周热门 更多>