【发布时间】:2017-12-10 12:40:25
【问题描述】:
我正在为使用 16 位 SPI 消息的 DAC 芯片编写 SPI 驱动程序……代表输出的值是从位 11 到位 4(一个 8 位 DAC)。我已经写了这个 MASK,但我不知道如何在不影响其他位的情况下更新数据:
#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 还有其他配置位(位 15-12),我可以将它们设置为单个位,我的问题只是将 8 位 DAC 值移动到位置 11 到 4。
标签: c embedded bit-manipulation bitwise-operators