MSP430x2xx关于驱动ADS1220的SPI接口的测试程序请教啊
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
可以下载官网例程 MSP430G2x01, MSP430G2x11, MSP430G2x21, MSP430G2x31 Code Examples 里面包含了SPI的例程
可在http://www.ti.com.cn/product/cn/msp430g2001 软件条目下下载
你好,我最近一个项目也在用ADS1220做RTS检测,发现配置寄存器读出来不对。
来发现数据手册对时序要求很严格尤其是时钟下降沿边沿时间不得超过50ns。硬件模拟SPI不行,后来我用的是STM32硬件SPI。内核是STM32F051C8T6读出来的数据还是不对。
} /****************************************************************/ void ADS1220_RegisterConfigue(void) { unsigned char i; unsigned char dat[5]={0x43,0x04,0x05,0x55,0x70};//数组包含写寄存器配置字,以及寄存器值。 CS_L; for(i=0;i<5;i++) { SPI_SendData8( SPI1, dat[i]); } CS_H; } /************************************************************/ void Read_Register(void) { unsigned char i,n; unsigned char dat[4]={0x00,0x00,0x00,0x00}; CS_L; SPI_SendData8( SPI1,0x23);//发送读寄存器指令; for(i=0;i<3;i++) { dat[i] = SPI_ReceiveData8(SPI1); } CS_H; for(i=0;i<4;i++) { n=dat[i]; printf("\n\r val = %d\n", n);打印输出。 } }
我就用这两个函数配置寄存器和读出寄存器。但是不对。自然没办法往下做了。求解!
你有核对过单片机的相位和极性和AD芯片要求的是否一样,不一样肯定不行的。
你好!
问题1:对于MSP430的硬件SPI是只能发送固定8位或者8的倍数的数据吗?
解答:是的,硬件是8位或16位移位寄存器。所以你要发的数据也是8位或16位
问题2:对于12位的这种数据格式,能使用MSP430的硬件SPI吗?
解答:你还是不理解SPI.spi只是传输数据的一种方式,收到数据后你需要对数据进行处理。
比如ADS1220芯片读取的有效数据是24bit,实际就是三个字节是有效数据。
你完全可以用片上SPI读取任何长度数据。读完后要处理,每个字节一个单位。留下有用的数据。12位也是,你就读两个字节把第一个字节的高4位清除再和低字节的8位组合在一起。形成一个U16类型的数去运算。
例子:
以ADS1220为例,他是24bit的补码数据形式传出来的。
假设数据已经读取在u8Data缓冲区
//处理数据
l32Value = u8Data[0];
l32Value <<= 8;
l32Value |= u8Data[1];
l32Value <<= 8;
l32Value |= u8Data[2];
if((u8Data[0]&0x80) == 0)
{
l32Value &= 0X00FFFFFF;
}
else if(u8Data[0]&0x80)//如果是负数
{
l32Value |= 0XFF000000;
}
return l32Value;