打印

帮忙看看cmx865读写程序,怎么就不行呢?!期待解决。手册

[复制链接]
2650|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhl100|  楼主 | 2010-10-21 22:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <stm32f10x_lib.h>              /* STM32F10x Library Definitions      */
typedef   unsigned char  uchar ;
typedef unsigned int uint ;
/*  cmx868 Register Address Definitions  */
#define  GENRESET  0x01
#define  GENCTRL_ADDR 0xE0
#define  TXMODE_ADDR  0xE1
#define  RXMODE_ADDR  0xE2
#define  TXDATA_ADDR  0xE3

#define  RXDATA_ADDR  0xE5
#define  STAT_ADDR  0xE6
#define  PROG_ADDR  0xE8
  //定义寄存器
uint   genctrl;  
uint   rxmode;
uint    stat;
uint   txmode;  
uchar   txdata;  
uchar  rxdata;
uint   prog;
uchar   int_func;


#define      CDATA1    GPIO_SetBits(GPIOD, GPIO_Pin_0)
#define     CDATA0    GPIO_ResetBits(GPIOD, GPIO_Pin_0)
#define     SPICLK1    GPIO_SetBits(GPIOD, GPIO_Pin_1)
#define     SPICLK0    GPIO_ResetBits(GPIOD, GPIO_Pin_1)
      
#define     RDATA1    GPIO_SetBits(GPIOD, GPIO_Pin_2)
#define     RDATA0    GPIO_ResetBits(GPIOD, GPIO_Pin_2)
#define     CSN1     GPIO_SetBits(GPIOD, GPIO_Pin_3)
#define     CSN0     GPIO_ResetBits(GPIOD, GPIO_Pin_3)
#define     IRQ1      GPIO_SetBits(GPIOD, GPIO_Pin_4)
#define     IRQ0     GPIO_ResetBits(GPIOD, GPIO_Pin_4)

void  write_8bit(uchar  come)
{
  uchar  i,j;
   CSN1;
       for(j=0;j<100;j++){;}
   CSN0;    for(j=0;j<100;j++){;}

  for(i=0;i<8;i++)      
{            
   
            
    if((come&0x80)!=0)
              
   {
       CDATA1 ;  
   }
    else
   {
    CDATA0 ;  
   }
       SPICLK0 ;
    for(j=0;j<100;j++)     {;}
   
     SPICLK1  ; for(j=0;j<100;j++)     {;}
   
      
come=come<<1;



  }   
     
  
                          
}  
uchar read_8bitoo(void)
{
uchar  i;
uchar  j;
uchar  k;
RDATA1;
j=0;
       for(j=0;j<100;j++){;}
   CSN0;    for(j=0;j<100;j++){;}
for(i=0;i<8;i++)
{
  SPICLK0; for(j=0;j<100;j++)     {;}
  j=j<<1;
  k=GPIO_ReadOutputDataBit(GPIOD, GPIO_Pin_2);
  if(k)
  j^=0x01;
  SPICLK1;for(j=0;j<100;j++)     {;}
}
return(j);
}
  uchar read_8bit(void)
{
uchar  i;
uchar  j;
uchar  k;
RDATA1;
j=0;
CSN1;
       for(j=0;j<100;j++){;}
   CSN0;    for(j=0;j<100;j++){;}
for(i=0;i<8;i++)
{
  SPICLK0; for(j=0;j<100;j++)     {;}
  j=j<<1;
  k=GPIO_ReadOutputDataBit(GPIOD, GPIO_Pin_2);
  if(k)
  j^=0x01;
  SPICLK1;for(j=0;j<100;j++)     {;}
}
return(j);
}

uchar read_16bit(void)
{  uchar i;

  write_8bit(PROG_ADDR) ;
  
   i=read_8bitoo();
  i=i<<0x08;
  i+=read_8bitoo();
  return(i);

}


     
  void  write_8bitOO(uchar  come)
{
  uchar  i,j;
  
       for(j=0;j<100;j++){;}
   CSN0;    for(j=0;j<100;j++){;}

  for(i=0;i<8;i++)      
{            
   
            
    if((come&0x80)!=0)
              
   {
       CDATA1 ;  
   }
    else
   {
    CDATA0 ;  
   }
       SPICLK0 ;
    for(j=0;j<100;j++)     {;}
   
     SPICLK1  ; for(j=0;j<100;j++)     {;}
   
      
come=come<<1;



  }  

   }



   void  write(uchar addr ,uchar wdata)   
{
  
       write_8bit(addr);
       write_8bitOO(wdata);
   
}

   void  writedata(uchar addr ,uchar wdatal,uchar wdatah)
      
  {
   write_8bit(addr) ;
     write_8bitOO(wdatal) ;
  write_8bitOO(wdatah) ;

   }

  void  init_cmx865(void)
{
  int j;

  write_8bit(GENRESET);
  

  writedata(GENCTRL_ADDR,0x09,0X00);

    for(j=0;j<100000;j++){;}
   writedata(TXMODE_ADDR,0X3E,0X1A);

      for(j=0;j<100;j++){;}


}

void writedata1(uchar a)
{
     int  i;
     i=a;
write( TXDATA_ADDR ,i);}

cmx865ads.pdf

751.37 KB

cmx865a

沙发
zhl100|  楼主 | 2010-10-21 23:01 | 只看该作者
帮忙看看,初学,第一次写相关C-BUS的程序,也是第一次用stm32独立写程序,请多给点建议

使用特权

评论回复
板凳
zhl100|  楼主 | 2010-10-22 23:42 | 只看该作者
1。 先复位
2。 配置写数据模式
3。 接下来我开始写数据 0

这样操作之后我用示波器在TXA和TXAN端接收信号,是不是会收到2.2K的正弦信号???

使用特权

评论回复
地板
爱你滴翔| | 2012-11-11 15:38 | 只看该作者
配置成编程音频输出在正常情况下是有输出信号的。仔细看下datasheet。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

787

帖子

2

粉丝