本帖最后由 农妇三拳 于 2010-8-11 09:32 编辑
以下程序为F2812与tlv5614实现单通道输出部分程序
interrupt void spiTxFifoIsr(void)
{
// SpiaRegs.SPITXBUF=0x0000+temp; // 通过SPISIMOA引脚发送数据。
// 0x0000用意为选择OUTA输出通道,慢模式。
// temp+=0x1;
// if(temp==0x1000) {temp=0;}
SpiaRegs.SPITXBUF=0x0000+2000+(800*sin(temp*deta));
// 通过SPISIMOA引脚发送数据。
// 0x0000用意为选择OUTA输出通道,慢模式。
temp++;
if(temp==720) {temp=0;}
GpioDataRegs.GPGCLEAR.bit.GPIOG5=1; // 更新数模转换输出数据
GpioDataRegs.GPGSET.bit.GPIOG5=1; // 保持数模转换输出数据
SpiaRegs.SPIFFTX.bit.TXFFINTCLR=1; // 清中断标志位
PieCtrlRegs.PIEACK.all|=0x20; // 发布PIE应答
delay(10);
}
怎么实现双通道以上输出,还没有弄清楚,高手请指点!
是否涉及到延时以及最大刷新频率了呢?
是否通过选择位 就可以了?但是我做了实验
interrupt void spiTxFifoIsr(void)
{
// SpiaRegs.SPITXBUF=0x0000+temp; // 通过SPISIMOA引脚发送数据。
// 0x0000用意为选择OUTA输出通道,慢模式。
// temp+=0x1;
// if(temp==0x1000) {temp=0;}
SpiaRegs.SPITXBUF=0x0000+2000+(800*sin(temp*deta)); // 通过SPISIMOA引脚发送数据。
// 0x0000用意为选择OUTA输出通道,慢模式。
delay(10); // 后加的延迟函数---------------------------------------------------------------------------------------------------------------------
SpiaRegs.SPITXBUF = 0x8000+2000+(800*sin(temp*deta)); // 0x8000用意位选择OUTC输出通道,慢模式,后加的---------------
temp++;
if(temp==720) {temp=0;}
GpioDataRegs.GPGCLEAR.bit.GPIOG5=1; // 更新数模转换输出数据
GpioDataRegs.GPGSET.bit.GPIOG5=1; // 保持数模转换输出数据
SpiaRegs.SPIFFTX.bit.TXFFINTCLR=1; // 清中断标志位
PieCtrlRegs.PIEACK.all|=0x20; // 发布PIE应答
delay(10);
}
可是outC通道没有输出啊? |