TLC2453的操作也比较简单,通过模拟的方式实现只需要看一下时序图把时序搞对即可。
在硬件SPI中,读和写实可以通过硬件同步进行的,因此在写入本次命令字时可以同时读取上一次命令的数据,在模拟SPI的方式中,读和写无法同步进行,因此只能先写后读,读取的即为本次命令的数据。
本程序在测试过程中发现写入命令0x04时读取的数据是正确的,而按照datasheet说明,如果以12位数据方式输出的话低四位应该为1000或者0000,具体原因尚未搞清楚,但是本程序测试是正确的。
程序如下:
hal.h
主程序中利用串口读取转换数值进行测试
- #include"hal.h"
- #include"stdlib.h"
- unsigned int data;
- unsigned char *s="00000";
- int main(void)
- {
- USART0_Init();
- DDRA=0XFF;
- PORTA=0XFF;
- TLC2543_Init();
- USART0_Puts("SPI test");
- while(1)
- {
- data=Read_TLC2543(0);
-
- ReverBit(PORTA,0);
- USART0_Puts(utoa(data,s,10));
- USART0_Puts("/t");
- data=Read_TLC2543(1);
- USART0_Puts(utoa(data,s,10));
- USART0_Puts("/n");
- _delay_ms(50);
- }
- }
本文转自emouse博客园博客,原文链接:http://www.cnblogs.com/emouse/archive/2011/01/12/2198185.html,如需转载请自行联系原作者