请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:ADS1292R 您好,
我一直在尝试从我的ADS1292r读取任何类型的输出引脚数据,似乎我不知道发生了什么。
我一直在尝试读取0x00位置的ID寄存器。 您能否快速查看并尝试找出我的错误?
代码已编译,我可以使SCLK,DIN和CS_正常工作,即 ,当"send_command"为时,我在示波器上获得SCLK和DIN
我正在使用 pic24fj64ga104,并且只想在开始时读取状态寄存器。
PIC SCLK = 1MHz
免责声明- 这是一个并非完全受我启发的代码!
void initADS1292(){
inCodeDelayMs(500);//延迟毫秒
inCodeDelayMs(500);
ADS_CLKSEL = 1;//迭代时钟
//重置ADS1292
ads_reset_off;
inCodeDelayMs(500);
inCodeDelayMs(500);
ad_reset_on;
inCodeDelayMs(500);
inCodeDelayMs(500);
ads_reset_off;
inCodeDelayMs(500);
选择;
inCodeDelayMs(500);
inCodeDelayMs(500);
取消选择;
inCodeDelayMs(500);
//发送SDATAC命令(停止连续读取数据模式)
send_command(SDATAC);//#define SDATAC 0x11
inCodeDelayMs(1);
inCodeDelayMs(5);
read_byte(0x00);//读取状态reg
int read_byte (int reg_addr){
内部输出=0;
CS_SELECT;// CS pin = 1
WriteSPI1 (0x20 | reg_addr);
tg_inCodeDelayMs(1);
WriteSPI1 (0x00);//要读/写的寄存器数-1
tg_inCodeDelayMs(1);
输出= ReadSPI1();
tg_inCodeDelayMs(1);
cs_delete;// css pin=0
return (out);
}
void send_command(uint8_t cmd){
选择;
tg_inCodeDelayMs(2);
WriteSPI1 (cmd);
tg_inCodeDelayMs(2);
取消选择;
}