|
- #define DAC_SCLK GPIO_PIN_3
- #define DAC_SYNC GPIO_PIN_4
- #define DAC_DIN GPIO_PIN_2
- #define OFF 0
- void IO_Init(void)
- {
- SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
- GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4);
- DAC_SCLK_0();
- DAC_SYNC_0();
- DAC_DIN_0();
- }
- void DAC_SCLK_1(void)
- {
- GPIOPinWrite(GPIO_PORTA_BASE,DAC_SCLK ,DAC_SCLK);
- }
- void DAC_SCLK_0(void)
- {
- GPIOPinWrite(GPIO_PORTA_BASE,DAC_SCLK ,OFF);
- }
- void DAC_SYNC_1(void)
- {
- GPIOPinWrite(GPIO_PORTA_BASE,DAC_SYNC,DAC_SYNC);
- }
- void DAC_SYNC_0(void)
- {
- GPIOPinWrite(GPIO_PORTA_BASE,DAC_SYNC,OFF);
- }
- void DAC_DIN_1(void)
- {
- GPIOPinWrite(GPIO_PORTA_BASE,DAC_DIN,DAC_DIN);
- }
- void DAC_DIN_0(void)
- {
- GPIOPinWrite(GPIO_PORTA_BASE,DAC_DIN,OFF);
- }
- void Delay_DA8552(void)
- {
- uint32 j;
- for(j=0;j<5000;j++)
- {
- }
- }
- void DAC(int channel_A_B,double vol)
- {
- unsigned int i=0,data=0,channel=channel_A_B;
- data=(unsigned int)((vol/5.0)*65536);
- DAC_SYNC_0();
- DAC_SYNC_1();
- Delay_DA8552();
- DAC_SYNC_0();
- for(i=0;i<8;i++){
- if((channel&0x80)==0x80) DAC_DIN_1();
- else
- DAC_DIN_0();
- channel<<=1;
- DAC_SCLK_1();
- Delay_DA8552();
- DAC_SCLK_0();
- }
- for(i=0;i<16;i++){
- if((data&0x8000)==0x8000) DAC_DIN_1();
- else DAC_DIN_0();
- data<<=1;
- DAC_SCLK_1();
- Delay_DA8552();
- DAC_SCLK_0();
- }
- }
复制代码
从430转过来的用GPIO模拟SPI通讯,这个是给DAC的,其他通讯类似。 |
|