Raspberry Pi采用PmodDA2数字模拟转换

时间:2015-12-01 22:36:57

标签: c++ raspberry-pi

作为大学项目的一部分,我必须使用C / C ++将数据从Raspberry Pi 2发送到Digilent PmodDA2。为此,我尝试使用bcm2835库,它一次只能发送8位。 PmodDA2是一个12位设备(整数值形式为0到4095),那么我如何传输这些位?在DACSPI2库参考手册(Arduino的函数)中,它甚至说“这个函数通过向SPI写入16位将12位值写入DA转换器......” - 所以我必须发送16位吗?丢失的4个比特看起来像什么?

更重要的是,我需要有关时钟极性,时钟相位以及芯片在高电平或低电平时是否有效的信息。

非常感谢!

PS:对于我尝试的位问题:

char spiOut[3]; char spiIn[3];

if(!bcm2835_init())return 1;
bcm2835_spi_begin();
bcm2835_spi_setBitOrder(BCM2835_SPI_BIT_ORDER_MSBFIRST);
bcm2835_spi_setDataMode(BCM2835_SPI_MODE3);
bcm2835_spi_setClockDivider(BCM2835_SPI_CLOCK_DIVIDER_256);
bcm2835_spi_chipSelect(BCM2835_SPI_CS0);
bcm2835_spi_setChipSelectPolarity(BCM2835_SPI_CS0, LOW);

while (k<10) { 

spiOut[0]=Data[k] >> 4;//Data[k] contains the Integer values from 0 to 4095
spiOut[1]=((Data[k]&0x00F)<<4)|(Data[k+1]>>8);
spiOut[2]=Data[k+1]&0x0FF;

bcm2835_spi_transfernb(spiOut, spiIn, sizeof(spiOut));

0 个答案:

没有答案