网友 cayong1207在21ic TI DSP技术论坛问以下问题未能解决
我是用DSP28335来驱动DAC7724,DAC7724的几根控制引脚我是用过IO口输出高低电平来控制的,但是4路输出一直都是-10V,请问这个是为什么?以下是我程序,求解答。
while(1) {
CHA_DATA =3000; //要输入的值
dataPort&= 0xf000;
LDAC=HIGH;
RW=HIGH;
CS=HIGH;
DELAY_US(1); //延时10us
RW=LOW; for(j=0;j<4;j++); //延时800ns
CS=LOW;
A0=LOW;
A1=LOW;
dataPort|=CHA_DATA ;// A输出口要输出的值
DELAY_US(2); //延时20us
CS=HIGH; for(j=0;j<4;j++); //延时800ns
RW=HIGH; DELAY_US(3); //延时30us
LDAC= LOW; //载入数据
DELAY_US(2); //延时20us
LDAC= HIGH;
for(j=0;j<1;j++); //延时200ns
CS=LOW; }
jinying wu:
您好!您的问题解决了吗?我也遇到这个问题了,想请教一下您
网友 cayong1207在21ic TI DSP技术论坛问以下问题未能解决
我是用DSP28335来驱动DAC7724,DAC7724的几根控制引脚我是用过IO口输出高低电平来控制的,但是4路输出一直都是-10V,请问这个是为什么?以下是我程序,求解答。
while(1) {
CHA_DATA =3000; //要输入的值
dataPort&= 0xf000;
LDAC=HIGH;
RW=HIGH;
CS=HIGH;
DELAY_US(1); //延时10us
RW=LOW; for(j=0;j<4;j++); //延时800ns
CS=LOW;
A0=LOW;
A1=LOW;
dataPort|=CHA_DATA ;// A输出口要输出的值
DELAY_US(2); //延时20us
CS=HIGH; for(j=0;j<4;j++); //延时800ns
RW=HIGH; DELAY_US(3); //延时30us
LDAC= LOW; //载入数据
DELAY_US(2); //延时20us
LDAC= HIGH;
for(j=0;j<1;j++); //延时200ns
CS=LOW; }
10#:
HIGH/LOW是如何定义的?没有上下文无法判断。
不过我猜测你是定义的宏用于操作GPIO的DAT寄存器置1或清0来输出高低,请注意,通过DAT寄存器连续操作同一组GPIO控制高低电平输出时会使前面的被覆盖,所以建议每条操作后都加入延时,或者直接使用SET/CLEAR/TOGGLE寄存器来操作,请参考:
http://processors.wiki.ti.com/index.php?title=General_Purpose_IO_(GPIO)_FAQ_for_C2000#Q:_Back-to-back_DAT_register_writes_do_not_work_as_expected
以及它提到的Programming TMS320x28xx Peripherals in C/C++ (SPRAA85)文档的第6章节Read-Modify-Write Considerations When Using Bit Fields.