SPI收发数据,高低位字节顺序!
目前在做一个项目,是基于51单片机和SPI模块通讯的。
我的问题是:
1、这个SPI模块要求发送数据时,每个字节必须是高位在前,地位在后。一个字节中哪些位是高位,哪些位是地位?比如一个二进制数据:11110000.如果按照它的要求的话,我应该先发11110000,还是00001111?
2、文档上只说了发送的时候是高位在前,地位在后。那么接收的时候是不是和发送的时序一样?还是接收时候先接受地位,再接收高位?
下面是我写的发送和接收的代码
发送:
void send_RF500_data_Byte(uchar COMMD)//高位在先,低位在后。
{
uchar i,j;
for(i=0;i<8;i++)
{
SDATA=COMMD&0x80;
SCLK=1;
for(j=0;j<10;j++)//大约50us左右
{
_nop_();
_nop_();
}
SCLK=0;
for(j=0;j<10;j++)
{
_nop_();
_nop_();
}
COMMD=COMMD<<1;
}
if(Timer0_times>=5)
{
// make_Err_data(0x60);
}
else
;
SCLK=0;
}
接收:
for(i=0;i<8;i++)
{
SCLK=1;
for(j=0;j<10;j++)
{
_nop_();
_nop_();
}
if(SDATA==1)
temp_data|=0x01;
temp_data<<=1;
SCLK=0;
for(j=0;j<10;j++)
{
_nop_();
_nop_();
}
}
问题很菜,不要见笑!主要看我写的发送和接收时的时序对不?
我的问题是:
1、这个SPI模块要求发送数据时,每个字节必须是高位在前,地位在后。一个字节中哪些位是高位,哪些位是地位?比如一个二进制数据:11110000.如果按照它的要求的话,我应该先发11110000,还是00001111?
2、文档上只说了发送的时候是高位在前,地位在后。那么接收的时候是不是和发送的时序一样?还是接收时候先接受地位,再接收高位?
下面是我写的发送和接收的代码
发送:
void send_RF500_data_Byte(uchar COMMD)//高位在先,低位在后。
{
uchar i,j;
for(i=0;i<8;i++)
{
SDATA=COMMD&0x80;
SCLK=1;
for(j=0;j<10;j++)//大约50us左右
{
_nop_();
_nop_();
}
SCLK=0;
for(j=0;j<10;j++)
{
_nop_();
_nop_();
}
COMMD=COMMD<<1;
}
if(Timer0_times>=5)
{
// make_Err_data(0x60);
}
else
;
SCLK=0;
}
接收:
for(i=0;i<8;i++)
{
SCLK=1;
for(j=0;j<10;j++)
{
_nop_();
_nop_();
}
if(SDATA==1)
temp_data|=0x01;
temp_data<<=1;
SCLK=0;
for(j=0;j<10;j++)
{
_nop_();
_nop_();
}
}
问题很菜,不要见笑!主要看我写的发送和接收时的时序对不?
...全文
相关推荐
STM32F4 SPI2初始化及收发数据.zip_STM32F4 SPI_STM32F4 SPI2初始化及收发数据_STM32f
STM32F4 SPI2初始化及收发数据
DSP28335标准SPI模式实战:告别FIFO,精准控制字节收发时序
本文详细解析了DSP28335标准SPI模式的应用技巧,重点探讨了禁用FIFO模式以实现精准字节收发时序控制的方法。通过寄存器配置、实战案例和调试经验分享,帮助开发者掌握硬件SPI在精密控制场景下的最佳实践,提升通信稳定性和效率。
SPI-DMA 收发实验
SPI收发成功后,加上DMA 提高数据传输的速度!
飞思卡尔 SPI收发程序
飞思卡尔单片机 SPI收发C程序,很好理解,菜鸟首选哦
STC单片机 nrf24l01 收发程序(硬件SPI,非软件模拟)
STC带SPI功能单片机通用,串口显示收发信息


单片机/工控
