这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 求助:CS5532的寄存器配置程序该咋写,实例该如何看?

共4条 1/1 1 跳转至

求助:CS5532的寄存器配置程序该咋写,实例该如何看?

助工
2012-12-30 09:43:55     打赏
请多多指教。
比如,我用51写灯(定时闪烁)。那么会将定时器的端口进行初始化赋值,工作模式选定。TMOD,TH0,TL0等等各种赋值。

但是CS5532里面的寄存器都是列举了功能。里面只提到了命令寄存器,配置寄存器等等。然后还有具体配置。
但没有命名。程序中如何调用,编写?

举个实例,下面这个是网上找的。
#include "iom64.h"  //调用 atmega64

#define ADC15hz 0x01800180   这里,看CS5532的文档中通道设置寄存器的描述。能看到是15hz。问题来了:怎么知道调用的是通道设置寄存器?
#define ADC30hz 0x01000100

*****************cs5532初始化*******************
************************************************************/
void adc_init(void)
{
        unsigned char i=0;
        unsigned long tmp;

        clr_cs5532_cs;
    do
        {
            i += 1;
                reset_cs5532();//初始化cs5532,串行口为命令状态
                write_cs5532_cmd(0x03,0x22000000);//写入CS5532复位命令 (这是程序自带注释)   //这里的 0x22000000也是通道设置寄存器?                                                                             0x03应该是关于命令寄存器的值(8位)  该怎么理解,困惑!
               
       tmp = read_cs5532_reg(0x0b);//读取配置寄存器内容 (这是程序自带注释)//        为什么可以判断出是读配置寄存器?

                if(i>3)
        {
                //disp_adcerr();
                        break;
                }
        }
        while(tmp!=0x30000000);           //不明白
}

*****************MCU向cs5532寄存器写入命令*******************

void write_cs5532_cmd(unsigned char cmd,unsigned long reg) //可以看出上面0x22000000对应的是寄存器,0x03对应的是命令
{
        unsigned char i,*p;
        unsigned long tmp;

        tmp = reg;
        p = (unsigned char *)&tmp;

        write_cs5532_byte(cmd);
        for(i=0;i<4;i++)
        {
                write_cs5532_byte(*(p+3-i));    //程序这里为什么连写4次? 什么意思?
        }
}

*****************MCU从cs5532寄存器读取命令*******************

unsigned long read_cs5532_reg(unsigned char cmd)
{
        unsigned char i,*p;
        unsigned long reg;

        p = (unsigned char *)&reg;
        write_cs5532_byte(cmd);
        for(i=0;i<4;i++)
        {
                write_cs5532_byte(0);           
                *(p+3-i) = SPDR;                   //这里为什么也是4次,
        }
        return reg;
}

void write_cs5532_byte(unsigned char c)  //这个是atmega64自有SPI的 数据函数。
{
        SPDR = c;
        while(!(SPSR & (1<<SPIF)))
        {
                ;
        }
}



关键词: 求助     CS5532     寄存器     配置     程序     该咋     实例    

高工
2012-12-30 13:49:19     打赏
2楼
帮顶。。。

助工
2013-01-03 15:52:13     打赏
3楼
谢谢,这几句已经整明白了

院士
2013-01-03 21:00:27     打赏
4楼
没有使用过类似的器件,帮不上忙。楼主只能自己研究了。

共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]