C++ 带PMODA2数模转换的Raspberry Pi

C++ 带PMODA2数模转换的Raspberry Pi,c++,raspberry-pi,C++,Raspberry Pi,作为大学项目的一部分,我必须使用C/C++将数据从Raspberry Pi 2发送到数字化PMODA2。为此,我尝试使用bcm2835库,它一次只能发送8位。PMODA2是一个12位设备(整数值从0到4095),因此如何传输所有位?在DACSPI2库参考手册(Arduino函数)中,它甚至说“此函数通过向SPI写入16位,将12位值写入DA转换器…”-那么我必须发送16位吗?那么丢失的4位是什么样子的呢 更重要的是,我需要有关时钟极性、时钟相位以及芯片在高电平或低电平时是否处于活动状态的信息 非

作为大学项目的一部分,我必须使用C/C++将数据从Raspberry Pi 2发送到数字化PMODA2。为此,我尝试使用bcm2835库,它一次只能发送8位。PMODA2是一个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));
charspiout[3];char-spiIn[3];
如果(!bcm2835_init())返回1;
bcm2835_spi_begin();
bcm2835_spi_设置编辑器(bcm2835_spi_位_顺序_msbirst);
bcm2835_spi_设置数据模式(bcm2835_spi_模式3);
bcm2835_spi_设置时钟分频器(bcm2835_spi_时钟分频器_256);
bcm2835_spi_芯片选择(bcm2835_spi_CS0);
bcm2835_spi_设置芯片选择极性(bcm2835_spi_CS0,低);
而(k>4;//数据[k]包含0到4095之间的整数值
spiOut[1]=(数据[k]&0x00F)8);
spiOut[2]=数据[k+1]&0x0FF;
bcm2835_spi_transfernb(spiOut,spiIn,sizeof(spiOut));