CDCTL01A 芯片 FAQ 中文版 - dukelec/cdbus_doc GitHub Wiki

  • Q: 使用 CDCTL01A 就不需要使用 485 芯片了?

A: 不可以。CDCTL01A 是控制器,输出 3.3V TTL 串口电平,如果用于 485 总线,需要外接 485 接口芯片。

  • Q: MCU 串口发送数据给 CDCTL01A 就可以使用了?

A: 不可以。CDCTL01A 接 MCU 是 SPI 接口,MCU 为 SPI 主机,而非使用串口。
如果想把现有串口转成 CDBUS 总线,需要使用一个内置 MCU + CDCTL01A 的转换器,转换器内部 MCU 负责把收到的串口数据通过 SPI 写入 CDCTL01A.

  • Q: MCU 把 CDBUS 数据直接通过 SPI 写入 CDCTL01A 就可以发送数据包?

A: 不可以。CDCTL01A 有寄存器定义,发送数据前要初始化一些寄存器,而数据需要写入指定寄存器。

  • Q: 需要写入什么数据到 CDCTL01A 的发送寄存器才能发送 CDBUS 数据包呢?

A: 写入一个不包含 CRC 的 CDBUS 数据包到 CDCTL01A 的发送寄存器即可(3 字节头 + 用户数据),芯片会自动生成和发送 CRC.

  • Q: 从 CDCTL01A 的接收寄存器读取的数据是什么格式呢?

A: 和发送一样,读取一个不包含 CRC 的 CDBUS 数据包。

  • Q: 芯片不是可以配置地址吗?但是发送的数据包还是包含发送地址,是否重复了?

A: 芯片配置的地址仅用于接收时的过滤,是不管发送的,发送方 MCU 要自觉使用自己地址来构建要发送的每个数据包。
(使用非自身地址来构建要发送的数据包通常是用来环路测试,伪造其它节点自己发数据包给自己,避免数据包被过滤掉。)

  • Q: CDCTL01A 外部必须使用 12MHz 时钟?

A: 不是必须使用 12MHz,晶振或外部时钟输入的频率范围可以参见 datasheet.
使用外部晶振时,手册参考电路中的 1MΩ 电阻不可省略。

  • Q: 可以不使用中断脚吗?

A: 可以不接中断脚,仅通过 SPI 不停查询 CDCTL01A 状态寄存器。

  • Q: 可以使用 Modbus 协议吗?

A: 不可以,需要使用 CDBUS 数据包格式。