搜索
bottom↓
回复: 1

CPLD 与单片机通信的问题?????

[复制链接]

出0入0汤圆

发表于 2012-10-23 08:38:55 | 显示全部楼层 |阅读模式
我用CPLD 与STM 8 进行通信,使用的是SPI 通信,可是STM8 发送的数据不能超过16位,超过16位CPLD 接收的数据就有错误,这是为啥啊????
这是STM8 的程序:void  send_data_2(u32 x )         //24位
{
  u8 i=0;
        x&=0xffffffff;
  //GPIO_WriteLow(DA_PORT_C,SPI_CS);//使能频率
  GPIO_WriteLow(DA_PORT_C,SPI_SCK);        //给两个准备脉冲
  GPIO_WriteHigh(DA_PORT_C,SPI_SCK);       
  delay_1(50);
        GPIO_WriteLow(DA_PORT_C,SPI_CS);//使能频率
  GPIO_WriteLow(DA_PORT_C,SPI_SCK);        //给两个准备脉冲
  GPIO_WriteHigh(DA_PORT_C,SPI_SCK);       
  delay_1(50);
//GPIO_WriteLow(DA_PORT_C,SPI_CS);//使能频率
for(i=0;i<24;i++)
  {
  GPIO_WriteLow(DA_PORT_C,SPI_SCK);       
   if(x&0x00000001<<i)
      GPIO_WriteHigh(DA_PORT_C,SPI_MISO);
   else
      GPIO_WriteLow(DA_PORT_C,SPI_MISO);
       
            GPIO_WriteHigh(DA_PORT_C,SPI_SCK);
                 //x=x<<1;
     delay_1(50);
         }
  
         GPIO_WriteHigh (DA_PORT_C,SPI_MISO);
   GPIO_WriteHigh (DA_PORT_C,SPI_CS);                 //失能频率发送
   GPIO_WriteLow  (DA_PORT_C,SPI_SCK);
   GPIO_WriteHigh (DA_PORT_C,SPI_SCK);       
   delay_1(50);
   GPIO_WriteLow(DA_PORT_C,SPI_SCK);
}

这是CPLD 的程序:
parameter         F=0,F0=1,F1=2,F2=3,F3=4,
                                F4=5,F5=6,F6=7,F7=8,F8=9,
                                F9=10,F10=11,F11=12,F12=13,
                                F13=14,F14=15,F15=16,F16=17,
                                F17=18,F18=19,F19=20,F20=21,
                                F21=22,F22=23,F23=24,F24=25,       
                                F25=26,F26=27,F27=28;
        always @ (posedge sck_rise)                        //当频率使能端为高点平1时,按状态顺序接受数据
                begin
                        if(~Cs)
                        case (sys_state_F)
                        F:        sys_state_F<=F0;
                        F0:                begin
                                                sys_state_F<=F1;
                                                 Date_int[0]<=Sdi;
                                        end                                               
                        F1:                begin
                                                sys_state_F<=F2;
                                                 Date_int[1]<=Sdi;
                                        end
                        F2:                begin
                                                sys_state_F<=F3;
                                                 Date_int[2]<=Sdi;
                                        end
                        F3:                begin
                                                sys_state_F<=F4;
                                                 Date_int[3]<=Sdi;
                                        end
                        F4:                begin
                                                sys_state_F<=F5;
                                                 Date_int[4]<=Sdi;
                                        end
                        F5:                begin
                                                sys_state_F<=F6;
                                                 Date_int[5]<=Sdi;
                                        end                       
                        F6:                begin
                                                sys_state_F<=F7;
                                                 Date_int[6]<=Sdi;
                                        end                               
                        F7:                begin
                                                sys_state_F<=F8;
                                                 Date_int[7]<=Sdi;
                                        end                       
                        F8:                begin
                                                sys_state_F<=F9;
                                                 Date_int[8]<=Sdi;
                                        end                       
                        F9:                begin
                                                sys_state_F<=F10;
                                                 Date_int[9]<=Sdi;
                                        end                       
                        F10:        begin
                                                sys_state_F<=F11;
                                                 Date_int[10]<=Sdi;
                                        end                                       
                        F11:        begin
                                                sys_state_F<=F12;
                                                 Date_int[11]<=Sdi;
                                        end                                       
                        F12:        begin
                                                sys_state_F<=F13;
                                                 Date_int[12]<=Sdi;
                                        end                                       
                        F13:        begin
                                                sys_state_F<=F14;
                                                 Date_int[13]<=Sdi;
                                        end                                       
                        F14:        begin
                                                sys_state_F<=F15;
                                                 Date_int[14]<=Sdi;
                                        end                               
                        F15:        begin
                                                sys_state_F<=F16;
                                                 Date_int[15]<=Sdi;
                                        end       
                    F16:   begin
                                                sys_state_F<=F17;
                                                 Date_int[16]<=Sdi;
                                        end       
                        F17:        begin
                                                sys_state_F<=F18;
                                                 Date_int[17]<=Sdi;
                                        end       
                        F18:    begin
                                                sys_state_F<=F19;
                                                 Date_int[18]<=Sdi;
                                        end       
                        F19:    begin
                                                sys_state_F<=F20;
                                                Date_int[19]<=Sdi;
                                    end                                       
                    F20:        begin
                                                sys_state_F<=F21;
                                                Date_int[20]<=Sdi;
                                        end
                        F21:        begin
                                                sys_state_F<=F22;
                                                 Date_int[21]<=Sdi;
                                        end       
                        F22:    begin
                                                sys_state_F<=F23;
                                                 Date_int[22]<=Sdi;
                                        end       
                        F23:    begin
                                                sys_state_F<=F;
                                                Date_int[23]<=Sdi;
                                        end       
                                                                                                                                                                              

                  default: sys_state_F<=F;
                        endcase
                else
                   begin
                   sys_state_F<=F        ;
                 
                   end
                end

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2012-10-23 09:11:52 | 显示全部楼层
怎么没人帮我看看啊,急死人啦???
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-24 09:21

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

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