diff --git a/User/application/inc/ble_mx_02.h b/User/application/inc/ble_mx_02.h deleted file mode 100644 index e69de29..0000000 diff --git a/User/application/inc/tcpclient.h b/User/application/inc/tcpclient.h deleted file mode 100644 index 0aab393..0000000 --- a/User/application/inc/tcpclient.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef _TCPCLIENT_H_ -#define _TCPCLIENT_H_ - -#define TCP_CLIENT_PORT 5001 - -void TCP_Client_Init(void); - -#endif diff --git a/User/application/src/ble_mx_02.c b/User/application/src/ble_mx_02.c deleted file mode 100644 index e69de29..0000000 diff --git a/User/application/src/tcpclient.c b/User/application/src/tcpclient.c deleted file mode 100644 index 30ace26..0000000 --- a/User/application/src/tcpclient.c +++ /dev/null @@ -1,104 +0,0 @@ -#include "lwip/netif.h" -#include "lwip/ip.h" -#include "lwip/tcp.h" -#include "lwip/init.h" -#include "netif/etharp.h" -#include "lwip/udp.h" -#include "lwip/pbuf.h" -#include -#include -#include "main.h" - -static void client_err(void *arg, err_t err) // 出现错误时调用这个函数,打印错误信息,并尝试重新连接 -{ - // printf("连接错误!!\n"); - // printf("尝试重连!!\n"); - - // // 连接失败的时候释放TCP控制块的内存 - // printf("关闭连接,释放TCP控制块内存\n"); - // // tcp_close(client_pcb); - - // // 重新连接 - // printf("重新初始化客户端\n"); - TCP_Client_Init(); -} - -static err_t client_send(void *arg, struct tcp_pcb *tpcb) // 发送函数,调用了tcp_write函数 -{ - // 定义一个用于发送的缓冲区 - uint8_t send_buf[] = "be connected successfully\n"; - - // 发送数据到服务器 - tcp_write(tpcb, send_buf, sizeof(send_buf), 1); - - // 返回操作成功标志 - return ERR_OK; -} - -static err_t client_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err) -{ - if (p != NULL) - { - /* 接收数据*/ - tcp_recved(tpcb, p->tot_len); - - /* 返回接收到的数据*/ - tcp_write(tpcb, p->payload, p->tot_len, 1); - - memset(p->payload, 0, p->tot_len); - pbuf_free(p); - } - else if (err == ERR_OK) - { - // 服务器断开连接 - tcp_close(tpcb); - - // 重新连接 - TCP_Client_Init(); - } - return ERR_OK; -} - -/** - * @brief 客户端连接成功的回调函数 - * - * 当客户端成功连接到服务器时,此函数将被调用。 - * - * @param arg 用户提供的参数 - * @param pcb TCP连接控制块指针 - * @param err 错误码 - * - * @return 错误码,ERR_OK表示成功 - */ -static err_t client_connected(void *arg, struct tcp_pcb *pcb, err_t err) -{ - // 注册一个周期性回调函数 - tcp_poll(pcb, client_send, 2); - - // 注册一个接收函数 - tcp_recv(pcb, client_recv); - - return ERR_OK; -} - -void TCP_Client_Init(void) -{ - struct tcp_pcb *client_pcb = NULL; // 这一句一定要放在里面,否则会没用 - ip4_addr_t server_ip; // 因为客户端要主动去连接服务器,所以要知道服务器的IP地址 - /* 创建一个TCP控制块 */ - client_pcb = tcp_new(); - - IP4_ADDR(&server_ip, DEST_IP_ADDR0, DEST_IP_ADDR1, DEST_IP_ADDR2, DEST_IP_ADDR3); // 合并IP地址 - // printf("IP 地址为: %d.%d.%d.%d\n", - // ip4_addr1(&server_ip), - // ip4_addr2(&server_ip), - // ip4_addr3(&server_ip), - // ip4_addr4(&server_ip)); - // printf("客户端开始连接!\n"); - - // 开始连接 - tcp_connect(client_pcb, &server_ip, TCP_CLIENT_PORT, client_connected); - ip_set_option(client_pcb, SOF_KEEPALIVE); - // 注册异常处理 - tcp_err(client_pcb, client_err); -} diff --git a/User/driver/ad7124.c b/User/driver/ad7124.c deleted file mode 100644 index 452123d..0000000 --- a/User/driver/ad7124.c +++ /dev/null @@ -1,455 +0,0 @@ -#include "ad7124.h" -/* Error codes */ -#define INVALID_VAL -1 /* Invalid argument */ -#define COMM_ERR -2 /* Communication error on receive */ -#define AD7124_TIMEOUT -3 /* A timeout has occured */ - -// 閰嶇疆ad7124瀵勫瓨鍣ㄧ殑鍊硷紝鏍规嵁瀹為檯椤圭洰闇姹傞厤缃 -static ad7124_st_reg_t ad7124_regs[AD7124_REG_NO] = { - {AD7124_STATUS, 0x00, AD7124_SIZE_1, AD7124_R}, /* AD7124_Status */ - {AD7124_ADC_CONTROL, 0x0280, AD7124_SIZE_2, AD7124_RW}, /* AD7124_ADC_Control */ - {AD7124_DATA, 0x000000, AD7124_SIZE_3, AD7124_R}, /* AD7124_Data */ - {AD7124_IOCON1, 0x000000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_IOCon1 */ - {AD7124_IOCON2, 0x0000, AD7124_SIZE_2, AD7124_RW}, /* AD7124_IOCon2 */ - {AD7124_ID, 0x02, AD7124_SIZE_1, AD7124_R}, /* AD7124_ID */ - {AD7124_ERROR, 0x000000, AD7124_SIZE_3, AD7124_R}, /* AD7124_Error */ - {AD7124_ERROR_EN, 0x000040, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Error_En */ - {AD7124_MCLK_COUNT, 0x00, AD7124_SIZE_1, AD7124_R}, /* AD7124_Mclk_Count */ - {AD7124_CHANNEL_0, 0x0051, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_0 */ - {AD7124_CHANNEL_1, 0x0071, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_1 */ - {AD7124_CHANNEL_2, 0x0091, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_2 */ - {AD7124_CHANNEL_3, 0x00B1, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_3 */ - {AD7124_CHANNEL_4, 0x00D1, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_4 */ - {AD7124_CHANNEL_5, 0x00F1, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_5 */ - {AD7124_CHANNEL_6, 0x0111, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_6 */ - {AD7124_CHANNEL_7, 0x0131, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_7 */ - {AD7124_CHANNEL_8, 0x0151, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_8 */ - {AD7124_CHANNEL_9, 0x0171, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_9 */ - {AD7124_CHANNEL_10, 0x0001, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_10 */ - {AD7124_CHANNEL_11, 0x0001, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_11 */ - {AD7124_CHANNEL_12, 0x0001, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_12 */ - {AD7124_CHANNEL_13, 0x0001, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_13 */ - {AD7124_CHANNEL_14, 0x0001, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_14 */ - {AD7124_CHANNEL_15, 0x0001, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_15 */ - {AD7124_CONFIG_0, 0x01E0, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_0 */ - {AD7124_CONFIG_1, 0x0040, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_1 */ - {AD7124_CONFIG_2, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_2 */ - {AD7124_CONFIG_3, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_3 */ - {AD7124_CONFIG_4, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_4 */ - {AD7124_CONFIG_5, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_5 */ - {AD7124_CONFIG_6, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_6 */ - {AD7124_CONFIG_7, 0x0860, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Config_7 */ - {AD7124_FILTER_0, 0x060080, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_0 */ - {AD7124_FILTER_1, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_1 */ - {AD7124_FILTER_2, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_2 */ - {AD7124_FILTER_3, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_3 */ - {AD7124_FILTER_4, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_4 */ - {AD7124_FILTER_5, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_5 */ - {AD7124_FILTER_6, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_6 */ - {AD7124_FILTER_7, 0x060180, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Filter_7 */ - {AD7124_OFFSET_0, 0x800000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Offset_0 */ - {AD7124_OFFSET_1, 0x800000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Offset_1 */ - {AD7124_OFFSET_2, 0x800000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Offset_2 */ - {AD7124_OFFSET_3, 0x800000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Offset_3 */ - {AD7124_OFFSET_4, 0x800000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Offset_4 */ - {AD7124_OFFSET_5, 0x800000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Offset_5 */ - {AD7124_OFFSET_6, 0x800000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Offset_6 */ - {AD7124_OFFSET_7, 0x800000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Offset_7 */ - {AD7124_GAIN_0, 0x500000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Gain_0 */ - {AD7124_GAIN_1, 0x500000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Gain_1 */ - {AD7124_GAIN_2, 0x500000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Gain_2 */ - {AD7124_GAIN_3, 0x500000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Gain_3 */ - {AD7124_GAIN_4, 0x500000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Gain_4 */ - {AD7124_GAIN_5, 0x500000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Gain_5 */ - {AD7124_GAIN_6, 0x500000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Gain_6 */ - {AD7124_GAIN_7, 0x500000, AD7124_SIZE_3, AD7124_RW}, /* AD7124_Gain_7 */ -}; - -static ad7124_st_reg_t ad7124_channel_regs[AD7124_CHANNEL_EN_MAX] = { - {AD7124_CHANNEL_0, 0x8051, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_0 */ - {AD7124_CHANNEL_1, 0x8071, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_1 */ - {AD7124_CHANNEL_2, 0x8091, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_2 */ - {AD7124_CHANNEL_3, 0x80B1, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_3 */ - {AD7124_CHANNEL_4, 0x80D1, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_4 */ - {AD7124_CHANNEL_5, 0x80F1, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_5 */ - {AD7124_CHANNEL_6, 0x8111, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_6 */ - {AD7124_CHANNEL_7, 0x8131, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_7 */ - {AD7124_CHANNEL_8, 0x8151, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_8 */ - {AD7124_CHANNEL_9, 0x8171, AD7124_SIZE_2, AD7124_RW}, /* AD7124_Channel_9 */ -}; - -ad7124_analog_t ad7124_analog[AD7124_CHANNEL_EN_MAX] = {NULL}; // AD閫氶亾閲囨牱缁撴瀯浣撴暟缁勶紝鐢ㄤ簬瀛樻斁AD閫氶亾閲囨牱鏁版嵁 -/** - * @brief 鏃犳牎楠岃鍙朅D7124瀵勫瓨鍣 - * - * 璇诲彇AD7124鐨勫瘎瀛樺櫒鍊硷紝涓嶈繘琛屾牎楠屻 - * - * @param p_reg 鎸囧悜瑕佽鍙栫殑瀵勫瓨鍣ㄧ粨鏋勭殑鎸囬拡 - * - * @return 璇诲彇鎴愬姛杩斿洖0锛屽け璐ヨ繑鍥炶礋鍊 - */ -int32_t ad7124_no_check_read_register(ad7124_st_reg_t *p_reg) -{ - int32_t ret = 0; - uint8_t buffer[8] = {0, 0, 0, 0, 0, 0, 0, 0}; - uint8_t i = 0; - uint8_t add_status_length = 0; - - /* Build the Command word */ - buffer[0] = AD7124_COMM_REG_WEN | AD7124_COMM_REG_RD | - AD7124_COMM_REG_RA(p_reg->addr); - - /* - * If this is an AD7124_DATA register read, and the DATA_STATUS bit is set - * in ADC_CONTROL, need to read 4, not 3 bytes for DATA with STATUS - */ - if ((p_reg->addr == AD7124_DATA) && - (ad7124_regs[AD7124_ADC_CONTROL].value & AD7124_ADC_CTRL_REG_DATA_STATUS)) - { - add_status_length = 1; // 姝ゅ鏄牴鎹瘎瀛樺櫒閰嶇疆鑰屽喅瀹,鏍规嵁AD7124_ADC_CONTROL绗10浣嶅喅瀹 - } - - /* Read data from the device */ - ret = ad7124_read_write_spi(buffer, p_reg->size + 1 + add_status_length); - if (ret < 0) - return ret; - - /* - * if reading Data with 4 bytes, need to copy the status byte to the STATUS - * register struct value member - */ - if (add_status_length) - { - ad7124_regs[AD7124_STATUS].value = buffer[p_reg->size + 1]; - } - - /* Build the result */ - p_reg->value = 0; - for (i = 1; i < p_reg->size + 1; i++) - { - p_reg->value <<= 8; - p_reg->value += buffer[i]; - } - - return ret; -} - -/** - * @brief 鍚慉D7124瀵勫瓨鍣ㄥ啓鍏ユ暟鎹紝涓嶈繘琛屾牎楠 - * - * 灏嗘暟鎹啓鍏ユ寚瀹氱殑AD7124瀵勫瓨鍣紝涓嶈繘琛屾暟鎹牎楠屻 - * - * @param reg 鎸囧悜瑕佸啓鍏ユ暟鎹殑瀵勫瓨鍣ㄥ湴鍧鍜屽肩殑鎸囬拡 - * @return 鍐欏叆缁撴灉锛屾垚鍔熻繑鍥0锛屽け璐ヨ繑鍥炶礋鍊 - */ -int32_t ad7124_no_check_write_register(ad7124_st_reg_t *reg) -{ - int32_t ret = 0; - int32_t reg_value = 0; - uint8_t wr_buf[8] = {0, 0, 0, 0, 0, 0, 0, 0}; - uint8_t i = 0; - - /* Build the Command word */ - wr_buf[0] = AD7124_COMM_REG_WEN | AD7124_COMM_REG_WR | - AD7124_COMM_REG_RA(reg->addr); - - /* Fill the write buffer */ - reg_value = reg->value; - for (i = 0; i < reg->size; i++) - { - wr_buf[reg->size - i] = reg_value & 0xFF; - reg_value >>= 8; - } - - /* Write data to the device */ - ret = ad7124_read_write_spi(wr_buf, reg->size + 1); - - return ret; -} - -/** - * @brief 浠嶢D7124瀵勫瓨鍣ㄨ鍙栨暟鎹 - * - * 璇ュ嚱鏁扮敤浜庝粠AD7124鐨勬寚瀹氬瘎瀛樺櫒涓鍙栨暟鎹 - * - * @param p_reg 鎸囧悜涓涓猘d7124_st_reg_t绫诲瀷鐨勬寚閽堬紝鍏朵腑鍖呭惈浜嗚璇诲彇鐨勫瘎瀛樺櫒鐨勫湴鍧銆 - * - * @return 杩斿洖璇诲彇鍒扮殑鏁版嵁锛屽鏋滆鍙栧け璐ュ垯杩斿洖璐熸暟銆 - * - * 鍦ㄨ鍙栧瘎瀛樺櫒涔嬪墠锛屼細鍏堟鏌RROR瀵勫瓨鍣ㄧ殑SPI_IGNORE_ERR浣 - */ -int32_t ad7124_read_register(ad7124_st_reg_t *p_reg) -{ - int32_t ret; - - if (p_reg->addr != AD7124_ERROR && (ad7124_regs[AD7124_ERROR_EN].value & AD7124_ERREN_REG_SPI_IGNORE_ERR_EN)) - { - ret = ad7124_wait_for_spi_ready(AD7124_RDY); // 璇诲瘎瀛樺櫒涔嬪墠妫鏌RROR瀵勫瓨鍣ㄧ殑SPI_IGNORE_ERR浣 - - if (ret < 0) - return ret; - } - ret = ad7124_no_check_read_register(p_reg); - - return ret; -} - -/** - * @brief 鍚慉D7124瀵勫瓨鍣ㄥ啓鍏ユ暟鎹 - * - * 灏嗘暟鎹啓鍏D7124鐨勬寚瀹氬瘎瀛樺櫒銆傚鏋滈敊璇瘎瀛樺櫒涓惎鐢ㄤ簡蹇界暐SPI閿欒鐨勫姛鑳斤紝鍒欏湪鍐欏叆鍓嶄細绛夊緟SPI鎺ュ彛鍑嗗灏辩华銆 - * - * @param p_reg 鎸囧悜瑕佸啓鍏ユ暟鎹殑瀵勫瓨鍣ㄧ粨鏋勪綋鐨勬寚閽 - * - * @return 杩斿洖鍐欏叆鎿嶄綔鐨勭粨鏋溿傚鏋滄搷浣滄垚鍔燂紝鍒欒繑鍥0锛涘惁鍒欒繑鍥炶礋鏁拌〃绀洪敊璇 - */ -int32_t ad7124_write_register(ad7124_st_reg_t *p_reg) -{ - int32_t ret; - - if ((ad7124_regs[AD7124_ERROR_EN].value & AD7124_ERREN_REG_SPI_IGNORE_ERR_EN)) - { - ret = ad7124_wait_for_spi_ready(AD7124_RDY); - if (ret < 0) - return ret; - } - ret = ad7124_no_check_write_register(p_reg); - - return ret; -} - -/** - * @brief 閲嶇疆AD7124璁惧 - * - * 璇ュ嚱鏁伴氳繃SPI鎺ュ彛鍚慉D7124鍙戦侀噸缃懡浠わ紝骞剁瓑寰呰澶囧畬鎴愪笂鐢佃繃绋嬨 - * - * @return 杩斿洖鍑芥暟鎵ц缁撴灉锛屾垚鍔熻繑鍥0锛屽け璐ヨ繑鍥為敊璇爜銆 - */ -int32_t ad7124_reset(void) -{ - int32_t ret = 0; - uint8_t wr_buf[8] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; // 鍙戦64涓1锛屽浣峚d7124鑺墖 - - ret = ad7124_read_write_spi(wr_buf, 8); - - /* Read POR bit to clear */ - ret = ad7124_wait_to_power_on(AD7124_RDY); - - return ret; -} - -/** - * @brief 绛夊緟SPI鎺ュ彛鍑嗗灏辩华 - * - * 绛夊緟AD7124鐨凷PI鎺ュ彛鍑嗗灏辩华锛岀洿鍒拌秴鏃躲 - * - * @param timeout 瓒呮椂鏃堕棿锛堝崟浣嶏細姣锛 - * @return 鎴愬姛杩斿洖0锛岃秴鏃惰繑鍥濧D7124_TIMEOUT - */ -int32_t ad7124_wait_for_spi_ready(uint32_t timeout) -{ - int32_t ret; - int8_t ready = 0; - - while (!ready && --timeout) - { - /* Read the value of the Error Register */ - ret = ad7124_read_register(&ad7124_regs[AD7124_ERROR]); - if (ret < 0) - return ret; - - /* Check the SPI IGNORE Error bit in the Error Register */ - ready = (ad7124_regs[AD7124_ERROR].value & - AD7124_ERR_REG_SPI_IGNORE_ERR) == 0; - } - - return timeout ? 0 : AD7124_TIMEOUT; -} - -/** - * @brief 绛夊緟AD7124鐢垫簮寮鍚 - * - * 姝ゅ嚱鏁板皢绛夊緟AD7124璁惧鐢垫簮寮鍚紝鐩村埌瓒呮椂鎴栨娴嬪埌鐢垫簮寮鍚爣蹇椼 - * - * @param timeout 瓒呮椂鏃堕棿 - * - * @return 杩斿洖0琛ㄧず鎴愬姛锛岃繑鍥濧D7124_TIMEOUT琛ㄧず瓒呮椂 - */ -int32_t ad7124_wait_to_power_on(uint32_t timeout) -{ - int32_t ret; - int8_t powered_on = 0; - - while (!powered_on && timeout--) - { - ret = ad7124_read_register(&ad7124_regs[AD7124_STATUS]); - if (ret < 0) - return ret; - - /* Check the POR_FLAG bit in the Status Register */ - powered_on = (ad7124_regs[AD7124_STATUS].value & - AD7124_STATUS_REG_POR_FLAG) == 0; - } - - return (timeout || powered_on) ? 0 : AD7124_TIMEOUT; -} - -/** - * @brief 绛夊緟AD7124杞崲鍑嗗灏辩华 - * - * 璇ュ嚱鏁扮瓑寰匒D7124瀹屾垚杞崲骞跺噯澶囧氨缁傚鏋滅瓑寰呰秴鏃讹紝鍒欒繑鍥為敊璇爜銆 - * - * @param timeout 瓒呮椂鏃堕棿 - * @return 鎴愬姛鏃惰繑鍥0锛岃秴鏃舵椂杩斿洖AD7124_TIMEOUT - */ -int32_t ad7124_wait_for_conv_ready(uint32_t timeout) -{ - int32_t ret; - int8_t ready = 0; - - while (!ready && --timeout) - { - /* Read the value of the Status Register */ - ret = ad7124_read_register(&ad7124_regs[AD7124_STATUS]); - if (ret < 0) - return ret; - - /* Check the RDY bit in the Status Register */ - ready = (ad7124_regs[AD7124_STATUS].value & - AD7124_STATUS_REG_RDY) == 0; - } - - return timeout ? 0 : AD7124_TIMEOUT; -} - -/** - * @brief 浠嶢D7124璇诲彇鏁版嵁 - * - * 浠嶢D7124鐨勬暟鎹瘎瀛樺櫒涓鍙栨暟鎹笺 - * - * @return 璇诲彇鍒扮殑鏁版嵁鍊 - */ -int32_t ad7124_read_data(void) -{ - int32_t read_data; - /* Read the value of the Status Register */ - ad7124_read_register(&ad7124_regs[AD7124_DATA]); - /* Get the read result */ - read_data = ad7124_regs[AD7124_DATA].value; - - return read_data; -} -/** - * @brief 浠嶢D7124鑾峰彇妯℃嫙淇″彿鏁版嵁 - * - * 璇ュ嚱鏁伴氳繃SPI鎺ュ彛浠嶢D7124鑺墖鑾峰彇妯℃嫙淇″彿鏁版嵁锛屽苟灏嗘暟鎹繚瀛樺埌ad7124_analog涓 - * - * @details - * - 閬嶅巻鎵鏈夋ā鎷熼氶亾锛屽姣忎釜閫氶亾鎵ц浠ヤ笅鎿嶄綔锛 - * - 绛夊緟AD7124瀹屾垚杞崲銆 - * - 璇诲彇杞崲鍚庣殑鏁版嵁銆 - * - 璁$畻鐢靛帇鍊硷紙鍗曟瀬鎬ц绠楀叕寮忥級銆 - * - 璁$畻鐢垫祦鍊硷紙鍩轰簬鐢靛帇鍊煎拰鐢甸樆鍊硷級锛屾湁鐨勯氶亾娌℃湁鐢垫祦鍊煎彲浠ュ拷鐣ャ - * - * @note - * - 杞崲瀹屾垚鍚庯紝閫氳繃鍏紡璁$畻鐢靛帇鍜岀數娴佸硷紝骞跺皢缁撴灉淇濆瓨鍒板叏灞鏁扮粍ad7124_analog涓 - * - 鐢靛帇璁$畻鍏紡锛欳ode = (0xFFFFFF 脳 AIN 脳 Gain)/VREF锛屽叾涓璙REF涓哄弬鑰冪數鍘嬶紝GAIN涓哄鐩婏紝AD_CODE涓篈D浠g爜銆 - * - 鐢垫祦璁$畻鍏紡锛氱數娴 = 鐢靛帇 / 鐢甸樆 * 1000锛屽叾涓數闃诲间负AD7124_RES锛屽崟浣嶈浆鎹负mA銆 - */ -// void ad7124_get_analog(void) -// { -// int32_t read_data; -// uint8_t i; -// uint8_t channel; -// // for (i = STOP_NC_ADC; i < AD7124_CHANNEL_EN_MAX; i++) -// // { -// // ad7124_regs[AD7124_CHANNEL_0].value = ad7124_channel_regs[i].value; -// // ad7124_write_register(&ad7124_regs[AD7124_CHANNEL_0]); - -// // ad7124_read_register(&ad7124_regs[AD7124_STATUS]); -// while (ad7124_wait_for_conv_ready(AD7124_RDY)) -// ; // 绛夊緟杞崲瀹屾垚 -// channel = ad7124_regs[AD7124_STATUS].value; -// ad7124_analog[channel].channel = channel; -// read_data = ad7124_read_data(); -// ad7124_analog[channel].data = read_data; -// ad7124_analog[channel].voltage = (float)(read_data * VREF / GAIN / AD_CODE); // AD7124鍗曟瀬鎬ц绠楀叕寮忥細Code = (0xFFFFFF 脳 AIN 脳 Gain)/VREF -// ad7124_analog[channel].current = (float)(ad7124_analog[channel].voltage / AD7124_RES * 1000); // 涔1000鏄负浜嗗皢鍗曚綅杞崲涓簃A - -// // ad7124_regs[AD7124_CHANNEL_0].value = 0; -// // ad7124_write_register(&ad7124_regs[AD7124_CHANNEL_0]); -// // } -// } -void ad7124_get_analog(uint8_t channel_nr) -{ - int32_t read_data; - // for (i = STOP_NC_ADC; i < AD7124_CHANNEL_EN_MAX; i++) - // { - ad7124_regs[AD7124_CHANNEL_0].value = ad7124_channel_regs[channel_nr].value; - ad7124_write_register(&ad7124_regs[AD7124_CHANNEL_0]); - - while (ad7124_wait_for_conv_ready(AD7124_RDY)) - ; // 绛夊緟杞崲瀹屾垚 - ad7124_analog[channel_nr].channel = channel_nr; - read_data = ad7124_read_data(); - ad7124_analog[channel_nr].data = read_data; - ad7124_analog[channel_nr].voltage = (float)(read_data * VREF / GAIN / AD_CODE); // AD7124鍗曟瀬鎬ц绠楀叕寮忥細Code = (0xFFFFFF 脳 AIN 脳 Gain)/VREF - ad7124_analog[channel_nr].current = (float)(ad7124_analog[channel_nr].voltage / AD7124_RES * 1000); // 涔1000鏄负浜嗗皢鍗曚綅杞崲涓簃A - - ad7124_regs[AD7124_CHANNEL_0].value = 0; - ad7124_write_register(&ad7124_regs[AD7124_CHANNEL_0]); - // } -} -/** - * @brief 閰嶇疆AD7124璁惧 - * - * 璇ュ嚱鏁拌礋璐e垵濮嬪寲AD7124璁惧锛屽垵濮嬪寲瀵勫瓨鍣ㄣ - * - * @return 鍒濆鍖栫粨鏋滐紝鎴愬姛杩斿洖0锛屽け璐ヨ繑鍥炶礋鏁 - */ -int32_t ad7124_setup(void) -{ - int32_t ret; - uint8_t reg_nr; - // board_spi_init(AD7124); // 鍒濆鍖朣PI,鍥犱负DAC161鐨凷PI瑕佸拰AD7124鍏辩敤锛屽苟涓旀椂搴忎笉涓鏍凤紝鎵浠ヨ鍏堝垵濮嬪寲SPI鎺ュ彛銆 - /* Reset the device interface.*/ - ret = ad7124_reset(); - if (ret < 0) - return ret; - HAL_Delay(10); - ad7124_read_register(&ad7124_regs[AD7124_ID]); - /* Initialize registers AD7124_ADC_Control through AD7124_Filter_7. */ - for (reg_nr = AD7124_STATUS; reg_nr < AD7124_OFFSET_0; reg_nr++) // 瀵筧d7124鐨勫彲鍐欏瘎瀛樺櫒杩涜閰嶇疆锛屼笉鍖呮嫭鍙瀵勫瓨鍣 - { - // ret = ad7124_read_register(&ad7124_regs[reg_nr]); - if (ad7124_regs[reg_nr].rw == AD7124_RW) - { - ret = ad7124_write_register(&ad7124_regs[reg_nr]); - ret = ad7124_read_register(&ad7124_regs[reg_nr]); - if (ret < 0) - break; - } - } - HAL_GPIO_WritePin(AD7124_SYNC_GPIO_Port, AD7124_SYNC_Pin, GPIO_PIN_SET); // AD7124鍚屾淇″彿浣胯兘 - return ret; -} - -/** - * @brief 閫氳繃SPI鎺ュ彛瀵笰D7124杩涜璇诲啓鎿嶄綔 - * - * 閫氳繃SPI鎺ュ彛瀵笰D7124杩涜璇诲啓鎿嶄綔锛屻 - * - * @param buff 鎸囧悜寰呬紶杈撴暟鎹殑鎸囬拡 - * @param length 寰呬紶杈撴暟鎹殑闀垮害 - * - * @return 浼犺緭缁撴灉锛屾垚鍔熻繑鍥0锛屽け璐ヨ繑鍥炶礋鏁 - */ -int32_t ad7124_read_write_spi(uint8_t *buff, uint8_t length) -{ - int32_t ret; - board_spi_init(AD7124); // 鍒濆鍖朣PI,鍥犱负DAC161鐨凷PI瑕佸拰AD7124鍏辩敤锛屽苟涓旀椂搴忎笉涓鏍凤紝鎵浠ヨ鍏堝垵濮嬪寲SPI鎺ュ彛銆 - board_spi_cs_on(AD7124); - ret = spi_transmit_receive(&hspi1, buff, length); - board_spi_cs_off(AD7124); - return ret; -} diff --git a/User/driver/ad7124.h b/User/driver/ad7124.h deleted file mode 100644 index 24a668f..0000000 --- a/User/driver/ad7124.h +++ /dev/null @@ -1,308 +0,0 @@ -#ifndef __AD7124_H -#define __AD7124_H - -/******************************************************************************/ -/***************************** Include Files **********************************/ -/******************************************************************************/ -#include "main.h" -#include "user_spi.h" -/******************************************************************************/ -/******************* Register map and register definitions ********************/ -/******************************************************************************/ - -/* Communication Register bits */ -#define AD7124_COMM_REG_WEN (0 << 7) -#define AD7124_COMM_REG_WR (0 << 6) -#define AD7124_COMM_REG_RD (1 << 6) -#define AD7124_COMM_REG_RA(x) ((x) & 0x3F) - -/* Status Register bits */ -#define AD7124_STATUS_REG_RDY (1 << 7) -#define AD7124_STATUS_REG_ERROR_FLAG (1 << 6) -#define AD7124_STATUS_REG_POR_FLAG (1 << 4) -#define AD7124_STATUS_REG_CH_ACTIVE(x) ((x) & 0xF) - -/* ADC_Control Register bits */ -#define AD7124_ADC_CTRL_REG_DOUT_RDY_DEL (1 << 12) -#define AD7124_ADC_CTRL_REG_CONT_READ (1 << 11) -#define AD7124_ADC_CTRL_REG_DATA_STATUS (1 << 10) -#define AD7124_ADC_CTRL_REG_CS_EN (1 << 9) -#define AD7124_ADC_CTRL_REG_REF_EN (1 << 8) -#define AD7124_ADC_CTRL_REG_POWER_MODE(x) (((x) & 0x3) << 6) -#define AD7124_ADC_CTRL_REG_MODE(x) (((x) & 0xF) << 2) -#define AD7124_ADC_CTRL_REG_CLK_SEL(x) (((x) & 0x3) << 0) - -/* IO_Control_1 Register bits */ -#define AD7124_IO_CTRL1_REG_GPIO_DAT2 (1 << 23) -#define AD7124_IO_CTRL1_REG_GPIO_DAT1 (1 << 22) -#define AD7124_IO_CTRL1_REG_GPIO_CTRL2 (1 << 19) -#define AD7124_IO_CTRL1_REG_GPIO_CTRL1 (1 << 18) -#define AD7124_IO_CTRL1_REG_PDSW (1 << 15) -#define AD7124_IO_CTRL1_REG_IOUT1(x) (((x) & 0x7) << 11) -#define AD7124_IO_CTRL1_REG_IOUT0(x) (((x) & 0x7) << 8) -#define AD7124_IO_CTRL1_REG_IOUT_CH1(x) (((x) & 0xF) << 4) -#define AD7124_IO_CTRL1_REG_IOUT_CH0(x) (((x) & 0xF) << 0) - -/* IO_Control_1 AD7124-8 specific bits */ -#define AD7124_8_IO_CTRL1_REG_GPIO_DAT4 (1 << 23) -#define AD7124_8_IO_CTRL1_REG_GPIO_DAT3 (1 << 22) -#define AD7124_8_IO_CTRL1_REG_GPIO_DAT2 (1 << 21) -#define AD7124_8_IO_CTRL1_REG_GPIO_DAT1 (1 << 20) -#define AD7124_8_IO_CTRL1_REG_GPIO_CTRL4 (1 << 19) -#define AD7124_8_IO_CTRL1_REG_GPIO_CTRL3 (1 << 18) -#define AD7124_8_IO_CTRL1_REG_GPIO_CTRL2 (1 << 17) -#define AD7124_8_IO_CTRL1_REG_GPIO_CTRL1 (1 << 16) - -/* IO_Control_2 Register bits */ -#define AD7124_IO_CTRL2_REG_GPIO_VBIAS7 (1 << 15) -#define AD7124_IO_CTRL2_REG_GPIO_VBIAS6 (1 << 14) -#define AD7124_IO_CTRL2_REG_GPIO_VBIAS5 (1 << 11) -#define AD7124_IO_CTRL2_REG_GPIO_VBIAS4 (1 << 10) -#define AD7124_IO_CTRL2_REG_GPIO_VBIAS3 (1 << 5) -#define AD7124_IO_CTRL2_REG_GPIO_VBIAS2 (1 << 4) -#define AD7124_IO_CTRL2_REG_GPIO_VBIAS1 (1 << 1) -#define AD7124_IO_CTRL2_REG_GPIO_VBIAS0 (1 << 0) - -/* IO_Control_2 AD7124-8 specific bits */ -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS15 (1 << 15) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS14 (1 << 14) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS13 (1 << 13) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS12 (1 << 12) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS11 (1 << 11) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS10 (1 << 10) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS9 (1 << 9) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS8 (1 << 8) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS7 (1 << 7) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS6 (1 << 6) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS5 (1 << 5) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS4 (1 << 4) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS3 (1 << 3) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS2 (1 << 2) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS1 (1 << 1) -#define AD7124_8_IO_CTRL2_REG_GPIO_VBIAS0 (1 << 0) - -/* ID Register bits */ -#define AD7124_ID_REG_DEVICE_ID(x) (((x) & 0xF) << 4) -#define AD7124_ID_REG_SILICON_REV(x) (((x) & 0xF) << 0) - -/* Error Register bits */ -#define AD7124_ERR_REG_LDO_CAP_ERR (1 << 19) -#define AD7124_ERR_REG_ADC_CAL_ERR (1 << 18) -#define AD7124_ERR_REG_ADC_CONV_ERR (1 << 17) -#define AD7124_ERR_REG_ADC_SAT_ERR (1 << 16) -#define AD7124_ERR_REG_AINP_OV_ERR (1 << 15) -#define AD7124_ERR_REG_AINP_UV_ERR (1 << 14) -#define AD7124_ERR_REG_AINM_OV_ERR (1 << 13) -#define AD7124_ERR_REG_AINM_UV_ERR (1 << 12) -#define AD7124_ERR_REG_REF_DET_ERR (1 << 11) -#define AD7124_ERR_REG_DLDO_PSM_ERR (1 << 9) -#define AD7124_ERR_REG_ALDO_PSM_ERR (1 << 7) -#define AD7124_ERR_REG_SPI_IGNORE_ERR (1 << 6) -#define AD7124_ERR_REG_SPI_SLCK_CNT_ERR (1 << 5) -#define AD7124_ERR_REG_SPI_READ_ERR (1 << 4) -#define AD7124_ERR_REG_SPI_WRITE_ERR (1 << 3) -#define AD7124_ERR_REG_SPI_CRC_ERR (1 << 2) -#define AD7124_ERR_REG_MM_CRC_ERR (1 << 1) -#define AD7124_ERR_REG_ROM_CRC_ERR (1 << 0) - -/* Error_En Register bits */ -#define AD7124_ERREN_REG_MCLK_CNT_EN (1 << 22) -#define AD7124_ERREN_REG_LDO_CAP_CHK_TEST_EN (1 << 21) -#define AD7124_ERREN_REG_LDO_CAP_CHK(x) (((x) & 0x3) << 19) -#define AD7124_ERREN_REG_ADC_CAL_ERR_EN (1 << 18) -#define AD7124_ERREN_REG_ADC_CONV_ERR_EN (1 << 17) -#define AD7124_ERREN_REG_ADC_SAT_ERR_EN (1 << 16) -#define AD7124_ERREN_REG_AINP_OV_ERR_EN (1 << 15) -#define AD7124_ERREN_REG_AINP_UV_ERR_EN (1 << 14) -#define AD7124_ERREN_REG_AINM_OV_ERR_EN (1 << 13) -#define AD7124_ERREN_REG_AINM_UV_ERR_EN (1 << 12) -#define AD7124_ERREN_REG_REF_DET_ERR_EN (1 << 11) -#define AD7124_ERREN_REG_DLDO_PSM_TRIP_TEST_EN (1 << 10) -#define AD7124_ERREN_REG_DLDO_PSM_ERR_ERR (1 << 9) -#define AD7124_ERREN_REG_ALDO_PSM_TRIP_TEST_EN (1 << 8) -#define AD7124_ERREN_REG_ALDO_PSM_ERR_EN (1 << 7) -#define AD7124_ERREN_REG_SPI_IGNORE_ERR_EN (1 << 6) -#define AD7124_ERREN_REG_SPI_SCLK_CNT_ERR_EN (1 << 5) -#define AD7124_ERREN_REG_SPI_READ_ERR_EN (1 << 4) -#define AD7124_ERREN_REG_SPI_WRITE_ERR_EN (1 << 3) -#define AD7124_ERREN_REG_SPI_CRC_ERR_EN (1 << 2) -#define AD7124_ERREN_REG_MM_CRC_ERR_EN (1 << 1) -#define AD7124_ERREN_REG_ROM_CRC_ERR_EN (1 << 0) - -/* Channel Registers 0-15 bits */ -#define AD7124_CH_MAP_REG_CH_ENABLE (1 << 15) -#define AD7124_CH_MAP_REG_SETUP(x) (((x) & 0x7) << 12) -#define AD7124_CH_MAP_REG_AINP(x) (((x) & 0x1F) << 5) -#define AD7124_CH_MAP_REG_AINM(x) (((x) & 0x1F) << 0) - -/* Configuration Registers 0-7 bits */ -#define AD7124_CFG_REG_BIPOLAR (1 << 11) -#define AD7124_CFG_REG_BURNOUT(x) (((x) & 0x3) << 9) -#define AD7124_CFG_REG_REF_BUFP (1 << 8) -#define AD7124_CFG_REG_REF_BUFM (1 << 7) -#define AD7124_CFG_REG_AIN_BUFP (1 << 6) -#define AD7124_CFG_REG_AINN_BUFM (1 << 5) -#define AD7124_CFG_REG_REF_SEL(x) ((x) & 0x3) << 3 -#define AD7124_CFG_REG_PGA(x) (((x) & 0x7) << 0) - -/* Filter Register 0-7 bits */ -#define AD7124_FILT_REG_FILTER(x) (((x) & 0x7) << 21) -#define AD7124_FILT_REG_REJ60 (1 << 20) -#define AD7124_FILT_REG_POST_FILTER(x) (((x) & 0x7) << 17) -#define AD7124_FILT_REG_SINGLE_CYCLE (1 << 16) -#define AD7124_FILT_REG_FS(x) (((x) & 0x7FF) << 0) - -/******************************************************************************/ -/*************************** Types Declarations *******************************/ -/******************************************************************************/ - -/*! AD7124 registers list*/ -typedef enum -{ - AD7124_STATUS = 0X00, // 鍙鐨勭姸鎬佸瘎瀛樺櫒锛岃鍙栬姱鐗囩姸鎬 - AD7124_ADC_CONTROL, // 鎺у埗瀵勫瓨鍣紝璁剧疆閲囨牱閫熺巼绛 - AD7124_DATA, // 鏁版嵁瀵勫瓨鍣紝璇诲彇閲囨牱鏁版嵁 - AD7124_IOCON1, // 璁剧疆婵鍔辩數娴佺瓑鍙傛暟锛岀敤浣淩TD娴嬭瘯鏃跺彲鐢 - AD7124_IOCON2, // 浣胯兘鍋忕疆鐢靛帇 - AD7124_ID, // ID瀵勫瓨鍣紝閮ㄥ垎鑺墖鐨処D鍜屾墜鍐屼笂鏈夋墍鍖哄埆锛屽彲鐢ㄦ瀵勫瓨鍣ㄦ祴璇昐PI閫氳 - AD7124_ERROR, // 閿欒瀵勫瓨鍣紝璇诲彇閿欒淇℃伅锛岃鍐欏瘎瀛樺櫒涔嬪墠鍏堣涓嬭瀵勫瓨鍣紝妫娴嬭姱鐗囩姸鎬佹槸鍚︽敮鎸佽鍐 - AD7124_ERROR_EN, // 閫氳繃浣胯兘璇ュ瘎瀛樺櫒鐨勭浉搴斾綅鏉ヤ娇鑳芥垨鑰呯鐢ㄨ瘖鏂姛鑳 - AD7124_MCLK_COUNT, // 鐩戞帶涓绘椂閽熼鐜 - AD7124_CHANNEL_0, // 璁剧疆AD閲囨牱閫氶亾鍜屾墍闇瑕佺殑閰嶇疆锛屽叾涓殑Setup浣嶅喅瀹氫簡閲囩敤鍝Config銆丗ilter銆丱ffset銆丟ain瀵勫瓨鍣ㄧ殑閰嶇疆锛涘叡鏈夊叓绉嶉厤缃 - AD7124_CHANNEL_1, // 閫氶亾瀵勫瓨鍣ㄧ殑椤哄簭骞朵笉鏄粠AI0寮曡剼璇诲埌鏈鍚庝竴涓紩鑴氾紝鑰屾槸閫氳繃鑷繁鐨勮缃潵鍐冲畾椤哄簭 - AD7124_CHANNEL_2, - AD7124_CHANNEL_3, - AD7124_CHANNEL_4, - AD7124_CHANNEL_5, - AD7124_CHANNEL_6, - AD7124_CHANNEL_7, - AD7124_CHANNEL_8, - AD7124_CHANNEL_9, - AD7124_CHANNEL_10, - AD7124_CHANNEL_11, - AD7124_CHANNEL_12, - AD7124_CHANNEL_13, - AD7124_CHANNEL_14, - AD7124_CHANNEL_15, - AD7124_CONFIG_0, // 閰嶇疆鏋佹э紝澧炵泭锛屽熀鍑嗛夋嫨绛夊弬鏁 - AD7124_CONFIG_1, - AD7124_CONFIG_2, - AD7124_CONFIG_3, - AD7124_CONFIG_4, - AD7124_CONFIG_5, - AD7124_CONFIG_6, - AD7124_CONFIG_7, - AD7124_FILTER_0, - AD7124_FILTER_1, // 閰嶇疆婊ゆ尝鍣 - AD7124_FILTER_2, - AD7124_FILTER_3, - AD7124_FILTER_4, - AD7124_FILTER_5, - AD7124_FILTER_6, - AD7124_FILTER_7, - AD7124_OFFSET_0, - AD7124_OFFSET_1, - AD7124_OFFSET_2, - AD7124_OFFSET_3, - AD7124_OFFSET_4, - AD7124_OFFSET_5, - AD7124_OFFSET_6, - AD7124_OFFSET_7, - AD7124_GAIN_0, - AD7124_GAIN_1, - AD7124_GAIN_2, - AD7124_GAIN_3, - AD7124_GAIN_4, - AD7124_GAIN_5, - AD7124_GAIN_6, - AD7124_GAIN_7, - AD7124_REG_NO -} ad7124_registers_addr_e; // 瀵勫瓨鍣ㄥ湴鍧 -typedef enum -{ - AD7124_SIZE_1 = 1, - AD7124_SIZE_2 = 2, - AD7124_SIZE_3 = 3, -} ad7124_registers_size_e; // 瀵勫瓨鍣ㄥ瓧鑺傚ぇ灏 -typedef enum -{ - AD7124_RW = 1, - AD7124_R = 2, - AD7124_W = 3, -} ad7124_registers_rw_e; // 瀵勫瓨鍣ㄨ鍐欐搷浣 - -typedef struct -{ - int addr; // 瀵勫瓨鍣ㄥ湴鍧锛宎d7124_registers_e - int value; // 瀵勫瓨鍣ㄥ - int size; // 瀵勫瓨鍣ㄥ瓧鑺傚ぇ灏 - int rw; // 瀵勫瓨鍣ㄥ彲鎵ц鐨勬搷浣滐紝ad7124_registers_rw_e -} ad7124_st_reg_t; // AD7124瀵勫瓨鍣ㄧ粨鏋勪綋 - -typedef enum -{ - STOP_NC_ADC = 0, // AD7124_CHANNEL_EN_2 - STOP_NO_ADC, // AD7124_CHANNEL_EN_3 - AI_IN1_ADC, // AD7124_CHANNEL_EN_4 - AI_IN2_ADC, // AD7124_CHANNEL_EN_5 - P1_DI2_ADC, // AD7124_CHANNEL_EN_6 - P1_DI1_ADC, // AD7124_CHANNEL_EN_7 - P1_AI_ADC, // AD7124_CHANNEL_EN_8 - P2_DI2_ADC, // AD7124_CHANNEL_EN_9 - P2_DI1_ADC, // AD7124_CHANNEL_EN_10 - P2_AI_ADC, // AD7124_CHANNEL_EN_11 - AD7124_CHANNEL_EN_MAX, -} ad7124_channel_e; // 璇ラ」鐩墍浣跨敤鐨勯氶亾 - -typedef struct -{ - uint8_t channel; - int32_t data; // 閲囨牱鏁版嵁 - float voltage; // 鐢靛帇鍊 - float current; // 鐢垫祦鍊 -} ad7124_analog_t; // 閲囨牱鏁版嵁缁撴瀯浣 - -#define AD7124_CRC8_POLYNOMIAL_REPRESENTATION 0x07 /* x8 + x2 + x + 1 */ -#define AD7124_DISABLE_CRC 0 // 榛樿鍏抽棴鏍¢獙 -#define AD7124_USE_CRC 1 - -#define AD7124_RDY 10000 // 绛夊緟鏃堕棿 - -#define AD7124_RES 100 // 閲囨牱鍩哄噯鐢甸樆 -#define VREF 2.5f // 鍩哄噯鐢靛帇 -#define GAIN 1 // 澧炵泭锛岃鍊煎拰閰嶇疆瀵勫瓨鍣ㄦ湁鍏 -#define AD_CODE 0XFFFFFF // 24浣岮DC - -/*! Reads the value of the specified register. */ -int32_t ad7124_read_register(ad7124_st_reg_t *p_reg); // 璇诲瘎瀛樺櫒 - -/*! Writes the value of the specified register. */ -int32_t ad7124_write_register(ad7124_st_reg_t *reg); // 鍐欏瘎瀛樺櫒 - -/*! Reads the value of the specified register without a device state check. */ -int32_t ad7124_no_check_read_register(ad7124_st_reg_t *p_reg); - -/*! Writes the value of the specified register without a device state check. */ -int32_t ad7124_no_check_write_register(ad7124_st_reg_t *reg); - -/*! Resets the device. */ -int32_t ad7124_reset(void); // 澶嶄綅ad7124鑺墖 - -/*! Waits until the device can accept read and write user actions. */ -int32_t ad7124_wait_for_spi_ready(uint32_t timeout); // 璇诲彇ad7124鑺墖鐘舵侊紝鐩村埌鍙互鎵ц璇诲啓鎿嶄綔 - -/*! Waits until the device finishes the power-on reset operation. */ -int32_t ad7124_wait_to_power_on(uint32_t timeout); - -/*! Waits until a new conversion result is available. */ -int32_t ad7124_wait_for_conv_ready(uint32_t timeout); // 绛夊緟杞崲瀹屾垚 - -/*! Reads the conversion result from the device. */ -int32_t ad7124_read_data(void); -void ad7124_get_analog(uint8_t channel_nr); -/*! Initializes the AD7124. */ -int32_t ad7124_setup(void); - -int32_t ad7124_read_write_spi(uint8_t *buff, uint8_t length); - -#endif /* __AD7124_H__ */ diff --git a/User/driver/dac161s997.c b/User/driver/dac161s997.c deleted file mode 100644 index 645eed4..0000000 --- a/User/driver/dac161s997.c +++ /dev/null @@ -1,56 +0,0 @@ -#include "dac161s997.h" - - -/** - * @brief 鍚慏AC161S997鑺墖鍐欏叆瀵勫瓨鍣ㄥ - * - * 璇ュ嚱鏁伴氳繃SPI鎺ュ彛鍚慏AC161S997鑺墖鍐欏叆鎸囧畾鐨勫瘎瀛樺櫒鍊笺 - * - * @param dac_num DAC鑺墖缂栧彿 - * @param reg 瑕佸啓鍏ョ殑瀵勫瓨鍣ㄥ湴鍧 - * @param data 瑕佸啓鍏ョ殑鏁版嵁锛16浣 - */ -void dac161s997_write_reg(chip_type_e dac_num, uint8_t reg, uint16_t data) -{ - uint8_t data_buffer[3] = {0, 0, 0}; - data_buffer[0] = reg; - data_buffer[1] = data >> 8; - data_buffer[2] = data; - board_spi_init(dac_num); // 鍒濆鍖朣PI锛屽洜涓篈DC鑺墖涔熺敤SPI1锛屼絾鏄椂搴忎笉鍚 - board_spi_cs_on(dac_num); - spi_transmit_receive(&hspi1, data_buffer, 3); - board_spi_cs_off(dac_num); -} - -/** - * @brief 鍒濆鍖朌AC161S997 DAC璁惧 - */ -void dac161s997_init(void) -{ - dac161s997_write_reg(DAC161S997_1, DAC161S997_ERR_LOW_REG, 0xFFFF); - dac161s997_write_reg(DAC161S997_1, DAC161S997_ERR_CONFIG_REG, 0x070E); - - dac161s997_write_reg(DAC161S997_2, DAC161S997_ERR_LOW_REG, 0xFFFF); - dac161s997_write_reg(DAC161S997_2, DAC161S997_ERR_CONFIG_REG, 0x070E); -} - -/** - * @brief DAC161S997鑺墖杈撳嚭鍑芥暟 - * - * 姝ゅ嚱鏁扮敤浜庤缃瓺AC161S997鑺墖鐨勮緭鍑虹數娴併 - * - * @param dac_num DAC鑺墖绫诲瀷 - * @param current 闇瑕佽缃殑鐢垫祦鍊硷紝鍗曚綅锛氭瀹 - */ -void dac161s997_output(chip_type_e dac_num, float current) -{ - uint32_t dac_code = (uint32_t)((current * 65535.0f) / 24.0f); - uint8_t data_buffer[3] = {0, 0, 0}; - data_buffer[0] = DAC161S997_DACCODE_REG; - data_buffer[1] = dac_code >> 8; - data_buffer[2] = dac_code; - board_spi_init(dac_num); // 鍒濆鍖朣PI锛屽洜涓篈DC鑺墖涔熺敤SPI1锛屼絾鏄椂搴忎笉鍚 - board_spi_cs_on(dac_num); - spi_transmit_receive(&hspi1, data_buffer, 3); - board_spi_cs_off(dac_num); -} diff --git a/User/driver/dac161s997.h b/User/driver/dac161s997.h deleted file mode 100644 index 6947e5a..0000000 --- a/User/driver/dac161s997.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef __DAC161S997_H__ -#define __DAC161S997_H__ - -#include "main.h" -#include "user_spi.h" -/* Defines ********************************************************************/ -/** - * @defgroup DAC161S997_REGS - * @{ - */ -#define DAC161S997_XFR_REG 0x01 /**< Command: transfer data into register (protected write mode) */ -#define DAC161S997_NOP_REG 0x02 /**< Command: does nothing except resetting the timeout timer */ -#define DAC161S997_PROTECT_REG_WR_REG 0x03 /**< 1 means protected write mode in effect */ -#define DAC161S997_DACCODE_REG 0x04 /**< 16 bit DAC code to be written */ -#define DAC161S997_ERR_CONFIG_REG 0x05 /**< Configuration of error states */ -#define DAC161S997_ERR_LOW_REG 0x06 /**< DAC code for the <4mA alarm level */ -#define DAC161S997_ERR_HIGH_REG 0x07 /**< DAC code for the >20mA alarm level */ -#define DAC161S997_RESET_REG 0x08 /**< Command: reset the chip */ -#define DAC161S997_STATUS_REG 0x09 /**< Status of the chip */ - -#define DAC161S997_SPI SPI1 - -void dac161s997_write_reg(uint8_t dac_num, uint8_t reg, uint16_t data); -uint16_t dac161s997_read(uint8_t reg); -extern void dac161s997_init(void); -extern void dac161s997_output(uint8_t dac_num, float current); - -#endif diff --git a/User/driver/ht1200m.c b/User/driver/ht1200m.c deleted file mode 100644 index bf2421c..0000000 --- a/User/driver/ht1200m.c +++ /dev/null @@ -1,12 +0,0 @@ -#include "ht1200m.h" - -extern void hart_ht1200m_reset(void) -{ - HART1_RESET_ON; - HART2_RESET_ON; - HAL_Delay(10); - HART1_RESET_OFF; - HART2_RESET_OFF; - HART1_RTS_RECEIVE; - HART2_RTS_RECEIVE; -} diff --git a/User/driver/ht1200m.h b/User/driver/ht1200m.h deleted file mode 100644 index c439b9a..0000000 --- a/User/driver/ht1200m.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef __HT1200M_H__ -#define __HT1200M_H__ - -#include "main.h" - -#define HART1_RESET_ON HAL_GPIO_WritePin(HART1_RST_GPIO_Port, HART1_RST_Pin, GPIO_PIN_RESET) // 鎷変綆寮曡剼澶嶄綅妯″潡 -#define HART1_RESET_OFF HAL_GPIO_WritePin(HART1_RST_GPIO_Port, HART1_RST_Pin, GPIO_PIN_SET) - -#define HART2_RESET_ON HAL_GPIO_WritePin(HART2_RST_GPIO_Port, HART2_RST_Pin, GPIO_PIN_RESET) // 鎷変綆寮曡剼澶嶄綅妯″潡 -#define HART2_RESET_OFF HAL_GPIO_WritePin(HART2_RST_GPIO_Port, HART2_RST_Pin, GPIO_PIN_SET) - -#define HART1_RTS_RECEIVE HAL_GPIO_WritePin(HART1_RTS_GPIO_Port, HART1_RTS_Pin, GPIO_PIN_SET) -#define HART1_RTS_SEND HAL_GPIO_WritePin(HART1_RTS_GPIO_Port, HART1_RTS_Pin, GPIO_PIN_RESET) // 鎷変綆寮曡剼鍙戦 - -#define HART2_RTS_RECEIVE HAL_GPIO_WritePin(HART2_RTS_GPIO_Port, HART2_RTS_Pin, GPIO_PIN_SET) -#define HART2_RTS_SEND HAL_GPIO_WritePin(HART2_RTS_GPIO_Port, HART2_RTS_Pin, GPIO_PIN_RESET) // 鎷変綆寮曡剼鍙戦 - -extern void hart_ht1200m_reset(void); -#endif