劳碌了两天,总算啃完了CS5550的Datasheet,途中遇到了不少问题,被卡到血都出来了,幸好得到了许多大牛的帮助,最后顺利解决。今天就把自己的一些小心得写出来和大家分享一下吧~
CS5550是一个双通道,低成本模数转换器。首先看一下它与主芯片P89V51RD2之间的管脚连接
接下来贴一个自己的模板型AD模块CS5550芯片的调用例程,代码实现功能的是当上位机PC发送0被SCM接收时启动CS5550转换功能,之后CS5550自动不断地采集输入通道检测到的模拟量,并转化成16进制的数字量形式通过串口反馈到上位机PC窗口。
#include <reg52.h>
sbit CS5550_INT=P3^3; //外部中断接收位
sbit CS5550_SCLK=P2^5; //串行时钟输入引脚,确定SDI与SDO的输入输出速率
sbit CS5550_SDO=P2^3; //串行数据输出引脚
sbit CS5550_CS=P2^6; //片选位,应在SCLK处于低电平时改变状态
sbit CS5550_SDI=P2^4; //串行数据输入引脚
sbit CS5550_RESET=P2^2; //复位引脚,低电平有效
void initialize(void);
void spiwrite_com(unsigned int);
void write_to_register(unsigned int command,unsigned int low,unsigned int mid,unsigned int high);
void transfer_byte(unsigned int);
void delay(void);
void Init_Com(void);
void SerialSend(unsigned char);
unsigned char CS5550_RECEIVE_TABLE[3]= {0,0,0};
unsigned char read_flag=0; //读取标志位
void INT1_int() interrupt 2 //外部中断定义函数
{
unsigned char a,b,n;
CS5550_SCLK=0;
CS5550_CS=0;
write_to_register(0x5e,0xff,0xff,0xfe); //清状态寄存器
transfer_byte(0x0e); //读输出寄存器1
for(a=0; a<3; a++)
{