搜索
bottom↓
回复: 2

请教,怎样定义通信包?

[复制链接]

出0入0汤圆

发表于 2008-5-17 10:42:02 | 显示全部楼层 |阅读模式
老师:  
  您好!我想问一下如何用C语言定义一个通信包,我想用SPI接口传输一个两字节的数据包,且每个字节的内容都已经知道,那么该如何把它们组织成一个包呢?包括发送包和接收包.谢谢!!  
unsigned char led_7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};  
flash unsigned char position[4]={0xef,0xdf,0xbf,0x7f};  
数据包的第一个字节为数组1的内容(循环)  
数据包的第二个字节为数组2的内容(循环),那么该如何组织这个数据包呢?谢谢老师!!

出0入296汤圆

发表于 2008-5-17 11:12:21 | 显示全部楼层
如果我没有理解错误的话,你可以采用奇偶辨别的方法,比如,在SPI传输完成中断处理程序中加入如下的代码

void SPI_STC_ISR(void)
{
    static unsigned char s_n = 1;
    static unsigned char s_chCounter = 0;
    unsigned char chData = SPDR;                  //SPI接收到的数据
   
    if (s_n == 0)
    {
        //发送第一字节
        SPDR = led_7[s_chCounter % 10];
    }
    else
    {
        //发送第二个字节
        SPDR = led_7[s_chCounter % 4];
        s_chCounter++;
        s_chCounter %= 20;                        //4和10的最小公倍数
    }
    s_n = (s_n == 1) ? 0 : 1;
}


在主程序里面,while循环之前,通过SPDR = led_7[0];来启动整个发送。

出0入296汤圆

发表于 2008-5-17 11:14:04 | 显示全部楼层
补充一点,SPI如果采用中断的方式,往往会达到上兆的频率。这种情况下,会消耗系统大量
资源,所以建议,增大SPI的分频。同时,在通讯很次要的情况下,使用查询方式发送数据包。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 17:52

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表