我在使用ads1148制作的测温电路中与430单片机通信,SPI初始化程序如下:
U0CTL|=SWRST; //复位 (1)
U0CTL|=SYNC+MM+CHAR; //SPI模式,主模式,8位数据 (2)
//时钟延迟半周期,时钟停止高电平,发送数据在下降沿,接收数据在上升沿
//选择smclk时钟(8MHZ),3线
U0TCTL|=CKPH+CKPL+SSEL1+STC; (3)
U0BR0=200; (4)
U0BR1=0; (5)
ME1|=BIT6; //spi使能 (6)
U0CTL&=~SWRST; //初始化 (7)
IE1|=URXIE0; //接收中断使能位 (8)
P3SEL|= BIT3+BIT2+BIT1; //设置IO口为特殊模式 (9)
读寄存器MUX0,发送20h,00h,单片机会收到默认值01h。时序图如下:
(从上到下:第一条是时钟clk,第二条是单片机的输出SIMO,第三条是单片的输入SOMI)
问题:1.请问这个时序图是正确的吗,怎么读的?
如果把程序第(3)改为U0TCTL|=CKPL+SSEL1+STC;,单片机收不到数据,时序图如下:
2.CKPH会使得不能正常通信吗?
user151383853:
检查串行数据传送的时序, 一个很重要和关键的前提, 先要捕捉和识别到时序的开头点, 特别是连续传输的时候, 有时候还需要mcu特别提供脉冲信号来引导