Q男 发表于 2016-3-17 00:10:29

分享一个MSP430硬件SPI驱动595的程序...

   // 初始化SPI硬件
   U0CTL= SWRST;                                 // **Put state machine in reset**
   ME1   |= USPIE0;                                     // 通过 MEx SFRs (USPIEx) 启用 USART 模块
   U0CTL= CHAR + SYNC + MM + SWRST;   //8-bit SPI master
   U0TCTL = CKPH + SSEL1 + STC;                // 相位,时钟,3-pin
   U0BR1= 0;                                          // 设置波特率分频系数,U0BR1:U0BR0>=2
   U0BR0= 2;
   U0MCTL = 0;                            // SPI 模式应被设置到 00h
   U0CTL &= ~SWRST;                  // **Initialize USCI state machine**


//刷新数据...
U0TXBUF = DIG_MASK;      // 发送新位
while( !(IFG1 & UTXIFG0));                           //等待发送缓存空...
U0TXBUF = temp;                                       // 发送新段

while( !(TXEPT & U0TCTL));                           //这里必须是等待发送器发送完毕,才能够更新RCLK,否则数据乱码....
RCLK_SET();// 更新显示
RCLK_RESET();   

采用硬件发送595数据,发送两次,只需要大约65个CLK,

如果再优化一下的话,应该50个CLK就能够发送完毕....

而软件模拟的话,需要接近600个CLK,

CPU占用率能够降低到10%

njjh1718 发表于 2016-3-17 00:34:27

楼主辛苦大晚上来分享资料谢谢了

miaoguoqiang 发表于 2016-3-17 09:22:08

CLK指的是时钟周期吧

Q男 发表于 2016-3-17 10:23:51

miaoguoqiang 发表于 2016-3-17 09:22
CLK指的是时钟周期吧

嗯,就是MCLK
页: [1]
查看完整版本: 分享一个MSP430硬件SPI驱动595的程序...