我是微控制器编程的新手。我正在使用 ATmega32-A 控制器和 CodeVisionAVR 编译器。我正在使用波形发生器(AD9833)通过 SPI 通信生成正弦波信号。我能够成功生成正弦波。现在我将该信号传递给传感器。传感器输出通过多路复用器选择并发送到 ADC。现在我想使用 SPI 通信读取 ADC 值。我已经尝试了很多设置ADC的寄存器。仍然无法正常工作。要查看 SPI 通信代码,请查看我之前的帖子ADC registers setup using spi communication。我正在使用 USART(RS232) 通信在 PC(PuTTY) 上打印值。
有人建议我使用 bit-banging。我对这个概念很陌生。任何人都可以为我提供一个 SPI 通信的位碰撞示例代码。如何启动该程序?谁能给我一个好的材料。我需要任何外部硬件吗?
我已经写了这个,包括引脚连接:
#define ADC_CS PORTB.3
#define MOSI PORTB.5
#define MISO PINB.6
#define SCK PORTB.7
void send_8bit_serial_data(unsigned char data)
{
int i;
ADC_CS=0;
for (i = 0; i < 8; i++)
{
// consider leftmost bit
// set line high if bit is 1, low if bit is 0
if (data & 0x80)
output_high(PORTB.5);
else
output_low(PORTB.5);
// pulse clock to indicate that bit value should be read
output_low(PORTB.7);
output_high(PORTB.7);
// shift byte left so next bit will be leftmost
data <<= 1;
}
// deselect device
ADC_CS=1;
}