16ビットSPIメッセージを使用するDACチップのSPIドライバを作成しています...出力を表す値はビット11からビット4です8ビットDAC)。私はこのMASKを書いてきたが、私は他のビットに影響を与えることなく、データを更新達成するためにどのよう見当がつかない:uint16_tを他のビットに影響を与えずにuint16_tに挿入する方法
#define MCP4901_SPI_MASK_DATA 0x0FF0
//So data mask in binary is 0000 1111 1111 0000
extern uint16_t mcpA;
static inline void mcpSetData(uint16_t* mcp, uint8_t value) {
//????
*mcp =| value & MCP4901_SPI_MASK_DATA; //NOT WORKING
}
なぜSPIデータレジスタの一部ではなく、すべてを書き込むのですか?それは意味をなさない。複雑な "デイジーチェーン"ハードウェアがありますか? – Lundin
@Lundin他の設定ビットもあります(ビット15-12).1ビットで設定することもできますが、問題はちょうど8ビットDAC値を11から4にシフトしていました。 – DEKKER