求教!关于使用gpio模拟输出的问题
我打算使用dsp F2812开发板来模拟XY2-100信号,XY2-100信号如下但是模拟结果确实这样的,加了延时指令调了很久都有不能同时处于上升沿的情况
4个gpio口初始化是这样的
GpioDataRegs.GPFCLEAR.bit.GPIOF2 = 1;
GpioDataRegs.GPFCLEAR.bit.GPIOF0 = 1;
GpioDataRegs.GPFCLEAR.bit.GPIOF3 = 1;
GpioDataRegs.GPFCLEAR.bit.GPIOF1 = 1;
其中一个周期是这样的
GpioDataRegs.GPFTOGGLE.bit.GPIOF2 = 1;
GpioDataRegs.GPFDAT.bit.GPIOF0 = 1;
GpioDataRegs.GPFDAT.bit.GPIOF3 = x_data.C2;
GpioDataRegs.GPFDAT.bit.GPIOF1 = y_data.C2;
Delay2();
GpioDataRegs.GPFTOGGLE.bit.GPIOF2 = 1;
Delay();
Delay函数中我写的是若干asm(" nop")。
求教高手指教一下如何才能保证不同gpio口能在同时处于一个上升沿或一个下降沿? 本帖最后由 croma 于 2016-12-23 10:53 编辑
兩個方法~
第一種 對整個 Port丟資料,簡單的說就是對存鎖器做邏輯運算,例如
P0 8個bit 現在的值是 0xFF,每個位元是一個腳位的信號,那麼把第0和第2腳位設定成低電位
P0 = P0 & 0xFA;
把第0和第2腳位設定成高電位
P0 = P0 | 0x05;
這樣你可以在一個指令內完成多個接腳的操作
第二種~ 其實我們根本不在乎信號有沒有同時上升下降(雖然說方法一這樣做比較省電,但是並不好閱讀),因為有同步的時脈訊號告訴對方資料準備好了沒有,所以只要在同步時脈發送前把資料準備好就行了,信號的延遲時間不要超過協定規定的時間就行了
页:
[1]