feat: 完成控制代码编写
This commit is contained in:
@@ -1,43 +1,43 @@
|
||||
/*********************************************************************************************************************
|
||||
* CH32V307VCT6 Opensourec Library <20><><EFBFBD><EFBFBD>CH32V307VCT6 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||
*
|
||||
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>CH32V307VCT6 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* CH32V307VCT6 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||
*
|
||||
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_driver_soft_iic
|
||||
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MounRiver Studio V1.8.1
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ CH32V307VCT6
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2022-09-15 <20><>W first version
|
||||
********************************************************************************************************************/
|
||||
* CH32V307VCT6 Opensourec Library <20><><EFBFBD><EFBFBD>CH32V307VCT6 <20><>Դ<EFBFBD>⣩<EFBFBD><E2A3A9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ڹٷ<DAB9> SDK <20>ӿڵĵ<DAB5><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>
|
||||
* Copyright (c) 2022 SEEKFREE <20><><EFBFBD>ɿƼ<C9BF>
|
||||
*
|
||||
* <20><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>CH32V307VCT6 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
|
||||
*
|
||||
* CH32V307VCT6 <20><>Դ<EFBFBD><D4B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᷢ<EFBFBD><E1B7A2><EFBFBD><EFBFBD> GPL<50><4C>GNU General Public License<73><65><EFBFBD><EFBFBD> GNUͨ<55>ù<EFBFBD><C3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><> GPL <20>ĵ<EFBFBD>3<EFBFBD>棨<EFBFBD><E6A3A8> GPL3.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD>κκ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><DEB8><EFBFBD>
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κεı<CEB5>֤
|
||||
* <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB>ʺ<EFBFBD><CABA>ض<EFBFBD><D8B6><EFBFBD>;<EFBFBD>ı<EFBFBD>֤
|
||||
* <20><><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8><EFBFBD><EFBFBD><EFBFBD>μ<EFBFBD> GPL
|
||||
*
|
||||
* <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ͬʱ<CDAC>յ<EFBFBD>һ<EFBFBD><D2BB> GPL <20>ĸ<EFBFBD><C4B8><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>û<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><https://www.gnu.org/licenses/>
|
||||
*
|
||||
* <20><><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4>ʹ<EFBFBD><CAB9> GPL3.0 <20><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>֤Э<D6A4><D0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>İ汾
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>İ<EFBFBD><C4B0><EFBFBD> libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> GPL3_permission_statement.txt <20>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> libraries <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>µ<EFBFBD> LICENSE <20>ļ<EFBFBD>
|
||||
* <20><>ӭ<EFBFBD><D3AD>λʹ<CEBB>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>뱣<EFBFBD><EBB1A3><EFBFBD><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC>İ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> zf_driver_soft_iic
|
||||
* <20><>˾<EFBFBD><CBBE><EFBFBD><EFBFBD> <20>ɶ<EFBFBD><C9B6><EFBFBD><EFBFBD>ɿƼ<C9BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾
|
||||
* <20>汾<EFBFBD><E6B1BE>Ϣ <20>鿴 libraries/doc <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD> version <20>ļ<EFBFBD> <20>汾˵<E6B1BE><CBB5>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> MounRiver Studio V1.8.1
|
||||
* <20><><EFBFBD><EFBFBD>ƽ̨ CH32V307VCT6
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> https://seekfree.taobao.com/
|
||||
*
|
||||
* <20>ļ<DEB8>¼
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ע
|
||||
* 2022-09-15 <20><>W first version
|
||||
********************************************************************************************************************/
|
||||
|
||||
#include "zf_common_debug.h"
|
||||
|
||||
#include "zf_driver_soft_iic.h"
|
||||
|
||||
#define SOFT_IIC_SDA_IO_SWITCH (0) // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ SDA <20><><EFBFBD><EFBFBD> I/O <20>л<EFBFBD> 0-<2D><><EFBFBD><EFBFBD>Ҫ 1-<2D><>Ҫ
|
||||
#define SOFT_IIC_SDA_IO_SWITCH (0) // <20>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ SDA <20><><EFBFBD><EFBFBD> I/O <20>л<EFBFBD> 0-<2D><><EFBFBD><EFBFBD>Ҫ 1-<2D><>Ҫ
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IIC <20><>ʱ
|
||||
@@ -46,12 +46,12 @@
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_delay(1);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
//static void soft_iic_delay (vuint32 delay)
|
||||
// static void soft_iic_delay (vuint32 delay)
|
||||
//{
|
||||
// volatile uint32 count = delay;
|
||||
// while(count --);
|
||||
//}
|
||||
#define soft_iic_delay(x) for(uint32 i = x; i--; )
|
||||
#define soft_iic_delay(x) for (uint32 i = x; i--;)
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IIC START <20>ź<EFBFBD>
|
||||
@@ -60,16 +60,16 @@
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_start(soft_iic_obj);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void soft_iic_start (soft_iic_info_struct *soft_iic_obj)
|
||||
static void soft_iic_start(soft_iic_info_struct *soft_iic_obj)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
gpio_high(soft_iic_obj->scl_pin); // SCL <20>ߵ<EFBFBD>ƽ
|
||||
gpio_high(soft_iic_obj->sda_pin); // SDA <20>ߵ<EFBFBD>ƽ
|
||||
gpio_high(soft_iic_obj->scl_pin); // SCL <20>ߵ<EFBFBD>ƽ
|
||||
gpio_high(soft_iic_obj->sda_pin); // SDA <20>ߵ<EFBFBD>ƽ
|
||||
|
||||
soft_iic_delay(soft_iic_obj->delay);
|
||||
gpio_low(soft_iic_obj->sda_pin); // SDA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
gpio_low(soft_iic_obj->sda_pin); // SDA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
soft_iic_delay(soft_iic_obj->delay);
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -79,16 +79,16 @@ static void soft_iic_start (soft_iic_info_struct *soft_iic_obj)
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_stop(soft_iic_obj);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void soft_iic_stop (soft_iic_info_struct *soft_iic_obj)
|
||||
static void soft_iic_stop(soft_iic_info_struct *soft_iic_obj)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
gpio_low(soft_iic_obj->sda_pin); // SDA <20>͵<EFBFBD>ƽ
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20>͵<EFBFBD>ƽ
|
||||
gpio_low(soft_iic_obj->sda_pin); // SDA <20>͵<EFBFBD>ƽ
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20>͵<EFBFBD>ƽ
|
||||
|
||||
soft_iic_delay(soft_iic_obj->delay);
|
||||
gpio_high(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
gpio_high(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
soft_iic_delay(soft_iic_obj->delay);
|
||||
gpio_high(soft_iic_obj->sda_pin); // SDA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
gpio_high(soft_iic_obj->sda_pin); // SDA <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
soft_iic_delay(soft_iic_obj->delay);
|
||||
}
|
||||
|
||||
@@ -100,25 +100,22 @@ static void soft_iic_stop (soft_iic_info_struct *soft_iic_obj)
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_send_ack(soft_iic_obj, 1);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static void soft_iic_send_ack (soft_iic_info_struct *soft_iic_obj, uint8 ack)
|
||||
static void soft_iic_send_ack(soft_iic_info_struct *soft_iic_obj, uint8 ack)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20>͵<EFBFBD>ƽ
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20>͵<EFBFBD>ƽ
|
||||
|
||||
if(ack)
|
||||
{
|
||||
gpio_high(soft_iic_obj->sda_pin); // SDA <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
else
|
||||
{
|
||||
gpio_low(soft_iic_obj->sda_pin); // SDA <20><><EFBFBD><EFBFBD>
|
||||
if (ack) {
|
||||
gpio_high(soft_iic_obj->sda_pin); // SDA <20><><EFBFBD><EFBFBD>
|
||||
} else {
|
||||
gpio_low(soft_iic_obj->sda_pin); // SDA <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
soft_iic_delay(soft_iic_obj->delay);
|
||||
gpio_high(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD>
|
||||
gpio_high(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD>
|
||||
soft_iic_delay(soft_iic_obj->delay);
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD>
|
||||
gpio_high(soft_iic_obj->sda_pin); // SDA <20><><EFBFBD><EFBFBD>
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD>
|
||||
gpio_high(soft_iic_obj->sda_pin); // SDA <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -128,25 +125,24 @@ static void soft_iic_send_ack (soft_iic_info_struct *soft_iic_obj, uint8 ack)
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_wait_ack(soft_iic_obj);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 soft_iic_wait_ack (soft_iic_info_struct *soft_iic_obj)
|
||||
static uint8 soft_iic_wait_ack(soft_iic_info_struct *soft_iic_obj)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
uint8 temp = 0;
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20>͵<EFBFBD>ƽ
|
||||
gpio_high(soft_iic_obj->sda_pin); // SDA <20>ߵ<EFBFBD>ƽ <20>ͷ<EFBFBD> SDA
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20>͵<EFBFBD>ƽ
|
||||
gpio_high(soft_iic_obj->sda_pin); // SDA <20>ߵ<EFBFBD>ƽ <20>ͷ<EFBFBD> SDA
|
||||
#if SOFT_IIC_SDA_IO_SWITCH
|
||||
gpio_set_dir(soft_iic_obj->sda_pin, GPI, GPI_FLOATING_IN);
|
||||
#endif
|
||||
soft_iic_delay(soft_iic_obj->delay);
|
||||
|
||||
gpio_high(soft_iic_obj->scl_pin); // SCL <20>ߵ<EFBFBD>ƽ
|
||||
gpio_high(soft_iic_obj->scl_pin); // SCL <20>ߵ<EFBFBD>ƽ
|
||||
soft_iic_delay(soft_iic_obj->delay);
|
||||
|
||||
if(gpio_get_level((gpio_pin_enum)soft_iic_obj->sda_pin))
|
||||
{
|
||||
if (gpio_get_level((gpio_pin_enum)soft_iic_obj->sda_pin)) {
|
||||
temp = 1;
|
||||
}
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20>͵<EFBFBD>ƽ
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20>͵<EFBFBD>ƽ
|
||||
#if SOFT_IIC_SDA_IO_SWITCH
|
||||
gpio_set_dir(soft_iic_obj->sda_pin, GPO, GPO_OPEN_DTAIN);
|
||||
#endif
|
||||
@@ -162,22 +158,21 @@ static uint8 soft_iic_wait_ack (soft_iic_info_struct *soft_iic_obj)
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 ACK ״̬
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 soft_iic_send_data (soft_iic_info_struct *soft_iic_obj, const uint8 data)
|
||||
static uint8 soft_iic_send_data(soft_iic_info_struct *soft_iic_obj, const uint8 data)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
uint8 temp = 0x80;
|
||||
while(temp)
|
||||
{
|
||||
// gpio_set_level(soft_iic_obj->sda_pin, data & temp);
|
||||
while (temp) {
|
||||
// gpio_set_level(soft_iic_obj->sda_pin, data & temp);
|
||||
((data & temp) ? (gpio_high(soft_iic_obj->sda_pin)) : (gpio_low(soft_iic_obj->sda_pin)));
|
||||
temp >>= 1;
|
||||
|
||||
soft_iic_delay(soft_iic_obj->delay);
|
||||
gpio_high(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD>
|
||||
gpio_high(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD>
|
||||
soft_iic_delay(soft_iic_obj->delay);
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD>
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
return ((soft_iic_wait_ack(soft_iic_obj) == 1) ? 0 : 1 );
|
||||
return ((soft_iic_wait_ack(soft_iic_obj) == 1) ? 0 : 1);
|
||||
}
|
||||
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
@@ -187,27 +182,26 @@ static uint8 soft_iic_send_data (soft_iic_info_struct *soft_iic_obj, const uint8
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><><EFBFBD><EFBFBD>
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
static uint8 soft_iic_read_data (soft_iic_info_struct *soft_iic_obj, uint8 ack)
|
||||
static uint8 soft_iic_read_data(soft_iic_info_struct *soft_iic_obj, uint8 ack)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
uint8 data = 0x00;
|
||||
uint8 temp = 8;
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20>͵<EFBFBD>ƽ
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20>͵<EFBFBD>ƽ
|
||||
soft_iic_delay(soft_iic_obj->delay);
|
||||
gpio_high(soft_iic_obj->sda_pin); // SDA <20>ߵ<EFBFBD>ƽ <20>ͷ<EFBFBD> SDA
|
||||
gpio_high(soft_iic_obj->sda_pin); // SDA <20>ߵ<EFBFBD>ƽ <20>ͷ<EFBFBD> SDA
|
||||
#if SOFT_IIC_SDA_IO_SWITCH
|
||||
gpio_set_dir(soft_iic_obj->sda_pin, GPI, GPI_FLOATING_IN);
|
||||
#endif
|
||||
|
||||
while(temp --)
|
||||
{
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD>
|
||||
while (temp--) {
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD>
|
||||
soft_iic_delay(soft_iic_obj->delay);
|
||||
gpio_high(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD>
|
||||
gpio_high(soft_iic_obj->scl_pin); // SCL <20><><EFBFBD><EFBFBD>
|
||||
soft_iic_delay(soft_iic_obj->delay);
|
||||
data = ((data << 1) | gpio_get_level((gpio_pin_enum)soft_iic_obj->sda_pin));
|
||||
}
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20>͵<EFBFBD>ƽ
|
||||
gpio_low(soft_iic_obj->scl_pin); // SCL <20>͵<EFBFBD>ƽ
|
||||
#if SOFT_IIC_SDA_IO_SWITCH
|
||||
gpio_set_dir(soft_iic_obj->sda_pin, GPO, GPO_OPEN_DTAIN);
|
||||
#endif
|
||||
@@ -220,11 +214,11 @@ static uint8 soft_iic_read_data (soft_iic_info_struct *soft_iic_obj, uint8 ack)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IIC <20>ӿ<EFBFBD>д 8bit <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *soft_iic_obj <20><><EFBFBD><EFBFBD> IIC ָ<><D6B8><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD> zf_driver_soft_iic.h <20><><EFBFBD>ĸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_write_8bit_register(soft_iic_obj, 0x01);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_write_8bit (soft_iic_info_struct *soft_iic_obj, const uint8 data)
|
||||
void soft_iic_write_8bit(soft_iic_info_struct *soft_iic_obj, const uint8 data)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
@@ -238,19 +232,18 @@ void soft_iic_write_8bit (soft_iic_info_struct *soft_iic_obj, const uint8 data)
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *soft_iic_obj <20><><EFBFBD><EFBFBD> IIC ָ<><D6B8><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD> zf_driver_soft_iic.h <20><><EFBFBD>ĸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data <20><><EFBFBD>ݴ<EFBFBD><DDB4>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_write_8bit_array(soft_iic_obj, data, 6);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_write_8bit_array (soft_iic_info_struct *soft_iic_obj, const uint8 *data, uint32 len)
|
||||
void soft_iic_write_8bit_array(soft_iic_info_struct *soft_iic_obj, const uint8 *data, uint32 len)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
zf_assert(data != NULL);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1);
|
||||
while(len --)
|
||||
{
|
||||
soft_iic_send_data(soft_iic_obj, *data ++);
|
||||
while (len--) {
|
||||
soft_iic_send_data(soft_iic_obj, *data++);
|
||||
}
|
||||
soft_iic_stop(soft_iic_obj);
|
||||
}
|
||||
@@ -259,11 +252,11 @@ void soft_iic_write_8bit_array (soft_iic_info_struct *soft_iic_obj, const uint8
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> IIC <20>ӿ<EFBFBD><D3BF><EFBFBD>д 16bit <20><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *soft_iic_obj <20><><EFBFBD><EFBFBD> IIC ָ<><D6B8><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD> zf_driver_soft_iic.h <20><><EFBFBD>ĸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_write_16bit(soft_iic_obj, 0x0101);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_write_16bit (soft_iic_info_struct *soft_iic_obj, const uint16 data)
|
||||
void soft_iic_write_16bit(soft_iic_info_struct *soft_iic_obj, const uint16 data)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
@@ -278,20 +271,19 @@ void soft_iic_write_16bit (soft_iic_info_struct *soft_iic_obj, const uint16 data
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *soft_iic_obj <20><><EFBFBD><EFBFBD> IIC ָ<><D6B8><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD> zf_driver_soft_iic.h <20><><EFBFBD>ĸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data <20><><EFBFBD>ݴ<EFBFBD><DDB4>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_write_16bit_array(soft_iic_obj, data, 6);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_write_16bit_array (soft_iic_info_struct *soft_iic_obj, const uint16 *data, uint32 len)
|
||||
void soft_iic_write_16bit_array(soft_iic_info_struct *soft_iic_obj, const uint16 *data, uint32 len)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
zf_assert(data != NULL);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1);
|
||||
while(len --)
|
||||
{
|
||||
while (len--) {
|
||||
soft_iic_send_data(soft_iic_obj, (uint8)((*data & 0xFF00) >> 8));
|
||||
soft_iic_send_data(soft_iic_obj, (uint8)(*data ++ & 0x00FF));
|
||||
soft_iic_send_data(soft_iic_obj, (uint8)(*data++ & 0x00FF));
|
||||
}
|
||||
soft_iic_stop(soft_iic_obj);
|
||||
}
|
||||
@@ -301,11 +293,11 @@ void soft_iic_write_16bit_array (soft_iic_info_struct *soft_iic_obj, const uint1
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *soft_iic_obj <20><><EFBFBD><EFBFBD> IIC ָ<><D6B8><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD> zf_driver_soft_iic.h <20><><EFBFBD>ĸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> register_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_write_8bit_register(soft_iic_obj, 0x01, 0x01);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_write_8bit_register (soft_iic_info_struct *soft_iic_obj, const uint8 register_name, const uint8 data)
|
||||
void soft_iic_write_8bit_register(soft_iic_info_struct *soft_iic_obj, const uint8 register_name, const uint8 data)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
@@ -321,20 +313,19 @@ void soft_iic_write_8bit_register (soft_iic_info_struct *soft_iic_obj, const uin
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> register_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data <20><><EFBFBD>ݴ<EFBFBD><DDB4>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_write_8bit_registers(soft_iic_obj, 0x01, data, 6);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_write_8bit_registers (soft_iic_info_struct *soft_iic_obj, const uint8 register_name, const uint8 *data, uint32 len)
|
||||
void soft_iic_write_8bit_registers(soft_iic_info_struct *soft_iic_obj, const uint8 register_name, const uint8 *data, uint32 len)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
zf_assert(data != NULL);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1);
|
||||
soft_iic_send_data(soft_iic_obj, register_name);
|
||||
while(len --)
|
||||
{
|
||||
soft_iic_send_data(soft_iic_obj, *data ++);
|
||||
while (len--) {
|
||||
soft_iic_send_data(soft_iic_obj, *data++);
|
||||
}
|
||||
soft_iic_stop(soft_iic_obj);
|
||||
}
|
||||
@@ -344,11 +335,11 @@ void soft_iic_write_8bit_registers (soft_iic_info_struct *soft_iic_obj, const ui
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *soft_iic_obj <20><><EFBFBD><EFBFBD> IIC ָ<><D6B8><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD> zf_driver_soft_iic.h <20><><EFBFBD>ĸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> register_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_write_16bit_register(soft_iic_obj, 0x0101, 0x0101);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_write_16bit_register (soft_iic_info_struct *soft_iic_obj, const uint16 register_name, const uint16 data)
|
||||
void soft_iic_write_16bit_register(soft_iic_info_struct *soft_iic_obj, const uint16 register_name, const uint16 data)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
@@ -366,11 +357,11 @@ void soft_iic_write_16bit_register (soft_iic_info_struct *soft_iic_obj, const ui
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> register_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data <20><><EFBFBD>ݴ<EFBFBD><DDB4>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_write_16bit_registers(soft_iic_obj, 0x0101, data, 6);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_write_16bit_registers (soft_iic_info_struct *soft_iic_obj, const uint16 register_name, const uint16 *data, uint32 len)
|
||||
void soft_iic_write_16bit_registers(soft_iic_info_struct *soft_iic_obj, const uint16 register_name, const uint16 *data, uint32 len)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
zf_assert(data != NULL);
|
||||
@@ -378,10 +369,9 @@ void soft_iic_write_16bit_registers (soft_iic_info_struct *soft_iic_obj, const u
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1);
|
||||
soft_iic_send_data(soft_iic_obj, (uint8)((register_name & 0xFF00) >> 8));
|
||||
soft_iic_send_data(soft_iic_obj, (uint8)(register_name & 0x00FF));
|
||||
while(len--)
|
||||
{
|
||||
while (len--) {
|
||||
soft_iic_send_data(soft_iic_obj, (uint8)((*data & 0xFF00) >> 8));
|
||||
soft_iic_send_data(soft_iic_obj, (uint8)(*data ++ & 0x00FF));
|
||||
soft_iic_send_data(soft_iic_obj, (uint8)(*data++ & 0x00FF));
|
||||
}
|
||||
soft_iic_stop(soft_iic_obj);
|
||||
}
|
||||
@@ -391,9 +381,9 @@ void soft_iic_write_16bit_registers (soft_iic_info_struct *soft_iic_obj, const u
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *soft_iic_obj <20><><EFBFBD><EFBFBD> IIC ָ<><D6B8><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD> zf_driver_soft_iic.h <20><><EFBFBD>ĸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><C8A1> 8bit <20><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_read_8bit(soft_iic_obj);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 soft_iic_read_8bit (soft_iic_info_struct *soft_iic_obj)
|
||||
uint8 soft_iic_read_8bit(soft_iic_info_struct *soft_iic_obj)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
uint8 temp = 0;
|
||||
@@ -410,19 +400,18 @@ uint8 soft_iic_read_8bit (soft_iic_info_struct *soft_iic_obj)
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> register_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݵĻ<DDB5><C4BB><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_read_8bit_array(soft_iic_obj, data, 8);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_read_8bit_array (soft_iic_info_struct *soft_iic_obj, uint8 *data, uint32 len)
|
||||
void soft_iic_read_8bit_array(soft_iic_info_struct *soft_iic_obj, uint8 *data, uint32 len)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
zf_assert(data != NULL);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1 | 0x01);
|
||||
while(len --)
|
||||
{
|
||||
*data ++ = soft_iic_read_data(soft_iic_obj, len == 0);
|
||||
while (len--) {
|
||||
*data++ = soft_iic_read_data(soft_iic_obj, len == 0);
|
||||
}
|
||||
soft_iic_stop(soft_iic_obj);
|
||||
}
|
||||
@@ -433,16 +422,16 @@ void soft_iic_read_8bit_array (soft_iic_info_struct *soft_iic_obj, uint8 *data,
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> register_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint16 <20><><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><C8A1> 16bit <20><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_read_16bit(soft_iic_obj);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint16 soft_iic_read_16bit (soft_iic_info_struct *soft_iic_obj)
|
||||
uint16 soft_iic_read_16bit(soft_iic_info_struct *soft_iic_obj)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
uint16 temp = 0;
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1 | 0x01);
|
||||
temp = soft_iic_read_data(soft_iic_obj, 0);
|
||||
temp = ((temp << 8)| soft_iic_read_data(soft_iic_obj, 1));
|
||||
temp = ((temp << 8) | soft_iic_read_data(soft_iic_obj, 1));
|
||||
soft_iic_stop(soft_iic_obj);
|
||||
return temp;
|
||||
}
|
||||
@@ -452,21 +441,20 @@ uint16 soft_iic_read_16bit (soft_iic_info_struct *soft_iic_obj)
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *soft_iic_obj <20><><EFBFBD><EFBFBD> IIC ָ<><D6B8><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD> zf_driver_soft_iic.h <20><><EFBFBD>ĸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݵĻ<DDB5><C4BB><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_read_16bit_array(soft_iic_obj, data, 8);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_read_16bit_array (soft_iic_info_struct *soft_iic_obj, uint16 *data, uint32 len)
|
||||
void soft_iic_read_16bit_array(soft_iic_info_struct *soft_iic_obj, uint16 *data, uint32 len)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
zf_assert(data != NULL);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1 | 0x01);
|
||||
while(len --)
|
||||
{
|
||||
while (len--) {
|
||||
*data = soft_iic_read_data(soft_iic_obj, 0);
|
||||
*data = ((*data << 8)| soft_iic_read_data(soft_iic_obj, len == 0));
|
||||
data ++;
|
||||
*data = ((*data << 8) | soft_iic_read_data(soft_iic_obj, len == 0));
|
||||
data++;
|
||||
}
|
||||
soft_iic_stop(soft_iic_obj);
|
||||
}
|
||||
@@ -477,9 +465,9 @@ void soft_iic_read_16bit_array (soft_iic_info_struct *soft_iic_obj, uint16 *data
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> register_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><C8A1> 8bit <20><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_read_8bit_register(soft_iic_obj, 0x01);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 soft_iic_read_8bit_register (soft_iic_info_struct *soft_iic_obj, const uint8 register_name)
|
||||
uint8 soft_iic_read_8bit_register(soft_iic_info_struct *soft_iic_obj, const uint8 register_name)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
uint8 temp = 0;
|
||||
@@ -499,11 +487,11 @@ uint8 soft_iic_read_8bit_register (soft_iic_info_struct *soft_iic_obj, const uin
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> register_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݵĻ<DDB5><C4BB><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_read_8bit_registers(soft_iic_obj, 0x01, data, 8);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_read_8bit_registers (soft_iic_info_struct *soft_iic_obj, const uint8 register_name, uint8 *data, uint32 len)
|
||||
void soft_iic_read_8bit_registers(soft_iic_info_struct *soft_iic_obj, const uint8 register_name, uint8 *data, uint32 len)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
zf_assert(data != NULL);
|
||||
@@ -512,9 +500,8 @@ void soft_iic_read_8bit_registers (soft_iic_info_struct *soft_iic_obj, const uin
|
||||
soft_iic_send_data(soft_iic_obj, register_name);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1 | 0x01);
|
||||
while(len --)
|
||||
{
|
||||
*data ++ = soft_iic_read_data(soft_iic_obj, len == 0);
|
||||
while (len--) {
|
||||
*data++ = soft_iic_read_data(soft_iic_obj, len == 0);
|
||||
}
|
||||
soft_iic_stop(soft_iic_obj);
|
||||
}
|
||||
@@ -525,9 +512,9 @@ void soft_iic_read_8bit_registers (soft_iic_info_struct *soft_iic_obj, const uin
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> register_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint16 <20><><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><C8A1> 16bit <20><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_read_16bit_register(soft_iic_obj, 0x0101);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint16 soft_iic_read_16bit_register (soft_iic_info_struct *soft_iic_obj, const uint16 register_name)
|
||||
uint16 soft_iic_read_16bit_register(soft_iic_info_struct *soft_iic_obj, const uint16 register_name)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
uint16 temp = 0;
|
||||
@@ -538,7 +525,7 @@ uint16 soft_iic_read_16bit_register (soft_iic_info_struct *soft_iic_obj, const u
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1 | 0x01);
|
||||
temp = soft_iic_read_data(soft_iic_obj, 0);
|
||||
temp = ((temp << 8)| soft_iic_read_data(soft_iic_obj, 1));
|
||||
temp = ((temp << 8) | soft_iic_read_data(soft_iic_obj, 1));
|
||||
soft_iic_stop(soft_iic_obj);
|
||||
return temp;
|
||||
}
|
||||
@@ -549,11 +536,11 @@ uint16 soft_iic_read_16bit_register (soft_iic_info_struct *soft_iic_obj, const u
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> register_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *data Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݵĻ<DDB5><C4BB><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> len Ҫ<><D2AA>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_read_16bit_registers(soft_iic_obj, 0x0101, data, 8);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_read_16bit_registers (soft_iic_info_struct *soft_iic_obj, const uint16 register_name, uint16 *data, uint32 len)
|
||||
void soft_iic_read_16bit_registers(soft_iic_info_struct *soft_iic_obj, const uint16 register_name, uint16 *data, uint32 len)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
zf_assert(data != NULL);
|
||||
@@ -563,11 +550,10 @@ void soft_iic_read_16bit_registers (soft_iic_info_struct *soft_iic_obj, const ui
|
||||
soft_iic_send_data(soft_iic_obj, (uint8)(register_name & 0x00FF));
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1 | 0x01);
|
||||
while(len --)
|
||||
{
|
||||
while (len--) {
|
||||
*data = soft_iic_read_data(soft_iic_obj, 0);
|
||||
*data = ((*data << 8)| soft_iic_read_data(soft_iic_obj, len == 0));
|
||||
data ++;
|
||||
*data = ((*data << 8) | soft_iic_read_data(soft_iic_obj, len == 0));
|
||||
data++;
|
||||
}
|
||||
soft_iic_stop(soft_iic_obj);
|
||||
}
|
||||
@@ -579,29 +565,26 @@ void soft_iic_read_16bit_registers (soft_iic_info_struct *soft_iic_obj, const ui
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> write_len <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *read_data <20><>ȡ<EFBFBD><C8A1><EFBFBD>ݴ<EFBFBD><DDB4>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> read_len <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> iic_transfer_8bit_array(IIC_1, addr, data, 64, data, 64);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_transfer_8bit_array (soft_iic_info_struct *soft_iic_obj, const uint8 *write_data, uint32 write_len, uint8 *read_data, uint32 read_len)
|
||||
void soft_iic_transfer_8bit_array(soft_iic_info_struct *soft_iic_obj, const uint8 *write_data, uint32 write_len, uint8 *read_data, uint32 read_len)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
zf_assert(write_data != NULL);
|
||||
zf_assert(read_data != NULL);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1);
|
||||
while(write_len --)
|
||||
{
|
||||
soft_iic_send_data(soft_iic_obj, *write_data ++);
|
||||
while (write_len--) {
|
||||
soft_iic_send_data(soft_iic_obj, *write_data++);
|
||||
}
|
||||
|
||||
if(read_len)
|
||||
{
|
||||
if (read_len) {
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1 | 0x01);
|
||||
while(read_len --)
|
||||
{
|
||||
*read_data ++ = soft_iic_read_data(soft_iic_obj, read_len == 0);
|
||||
while (read_len--) {
|
||||
*read_data++ = soft_iic_read_data(soft_iic_obj, read_len == 0);
|
||||
}
|
||||
}
|
||||
soft_iic_stop(soft_iic_obj);
|
||||
@@ -614,31 +597,28 @@ void soft_iic_transfer_8bit_array (soft_iic_info_struct *soft_iic_obj, const uin
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> write_len <20><><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *read_data <20><>ȡ<EFBFBD><C8A1><EFBFBD>ݴ<EFBFBD><DDB4>Ż<EFBFBD><C5BB><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> read_len <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> iic_transfer_16bit_array(IIC_1, addr, data, 64, data, 64);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_transfer_16bit_array (soft_iic_info_struct *soft_iic_obj, const uint16 *write_data, uint32 write_len, uint16 *read_data, uint32 read_len)
|
||||
void soft_iic_transfer_16bit_array(soft_iic_info_struct *soft_iic_obj, const uint16 *write_data, uint32 write_len, uint16 *read_data, uint32 read_len)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
zf_assert(write_data != NULL);
|
||||
zf_assert(read_data != NULL);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1);
|
||||
while(write_len--)
|
||||
{
|
||||
while (write_len--) {
|
||||
soft_iic_send_data(soft_iic_obj, (uint8)((*write_data & 0xFF00) >> 8));
|
||||
soft_iic_send_data(soft_iic_obj, (uint8)(*write_data ++ & 0x00FF));
|
||||
soft_iic_send_data(soft_iic_obj, (uint8)(*write_data++ & 0x00FF));
|
||||
}
|
||||
if(read_len)
|
||||
{
|
||||
if (read_len) {
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1 | 0x01);
|
||||
while(read_len --)
|
||||
{
|
||||
while (read_len--) {
|
||||
*read_data = soft_iic_read_data(soft_iic_obj, 0);
|
||||
*read_data = ((*read_data << 8)| soft_iic_read_data(soft_iic_obj, read_len == 0));
|
||||
read_data ++;
|
||||
*read_data = ((*read_data << 8) | soft_iic_read_data(soft_iic_obj, read_len == 0));
|
||||
read_data++;
|
||||
}
|
||||
}
|
||||
soft_iic_stop(soft_iic_obj);
|
||||
@@ -649,11 +629,11 @@ void soft_iic_transfer_16bit_array (soft_iic_info_struct *soft_iic_obj, const ui
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> *soft_iic_obj <20><><EFBFBD><EFBFBD> IIC ָ<><D6B8><EFBFBD><EFBFBD>Ϣ <20><><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD> zf_driver_soft_iic.h <20><><EFBFBD>ĸ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> register_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> data Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_sccb_write_register(soft_iic_obj, 0x01, 0x01);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_sccb_write_register (soft_iic_info_struct *soft_iic_obj, const uint8 register_name, uint8 data)
|
||||
void soft_iic_sccb_write_register(soft_iic_info_struct *soft_iic_obj, const uint8 register_name, uint8 data)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
@@ -669,9 +649,9 @@ void soft_iic_sccb_write_register (soft_iic_info_struct *soft_iic_obj, const uin
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> register_name <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> uint8 <20><><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><C8A1> 8bit <20><><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_sccb_read_register(soft_iic_obj, 0x01);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
uint8 soft_iic_sccb_read_register (soft_iic_info_struct *soft_iic_obj, const uint8 register_name)
|
||||
uint8 soft_iic_sccb_read_register(soft_iic_info_struct *soft_iic_obj, const uint8 register_name)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
uint8 temp = 0;
|
||||
@@ -694,18 +674,46 @@ uint8 soft_iic_sccb_read_register (soft_iic_info_struct *soft_iic_obj, const uin
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> delay <20><><EFBFBD><EFBFBD> IIC <20><>ʱ <20><><EFBFBD><EFBFBD>ʱ<EFBFBD>Ӹߵ<D3B8>ƽʱ<C6BD><CAB1> Խ<><D4BD> IIC <20><><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> scl_pin <20><><EFBFBD><EFBFBD> IIC ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> zf_driver_gpio.h <20><> gpio_pin_enum ö<><C3B6><EFBFBD>嶨<EFBFBD><E5B6A8>
|
||||
// <20><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5> sda_pin <20><><EFBFBD><EFBFBD> IIC <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> zf_driver_gpio.h <20><> gpio_pin_enum ö<><C3B6><EFBFBD>嶨<EFBFBD><E5B6A8>
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// <20><><EFBFBD>ز<EFBFBD><D8B2><EFBFBD> void
|
||||
// ʹ<><CAB9>ʾ<EFBFBD><CABE> soft_iic_init(&soft_iic_obj, addr, 100, B6, B7);
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
// <20><>ע<EFBFBD><D7A2>Ϣ
|
||||
//-------------------------------------------------------------------------------------------------------------------
|
||||
void soft_iic_init (soft_iic_info_struct *soft_iic_obj, uint8 addr, uint32 delay, gpio_pin_enum scl_pin, gpio_pin_enum sda_pin)
|
||||
void soft_iic_init(soft_iic_info_struct *soft_iic_obj, uint8 addr, uint32 delay, gpio_pin_enum scl_pin, gpio_pin_enum sda_pin)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
zf_assert(scl_pin != sda_pin); // <20><><EFBFBD>ѣ<EFBFBD> scl_pin <20><> sda_pin <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>
|
||||
zf_assert(scl_pin != sda_pin); // <20><><EFBFBD>ѣ<EFBFBD> scl_pin <20><> sda_pin <20><>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD>
|
||||
soft_iic_obj->scl_pin = scl_pin;
|
||||
soft_iic_obj->sda_pin = sda_pin;
|
||||
soft_iic_obj->addr = addr;
|
||||
soft_iic_obj->delay = delay;
|
||||
gpio_init(scl_pin, GPO, GPIO_HIGH, GPO_PUSH_PULL); // <20><>ȡ<EFBFBD><C8A1>ӦIO<49><4F><EFBFBD><EFBFBD> AF<41><46><EFBFBD>ܱ<EFBFBD><DCB1><EFBFBD>
|
||||
gpio_init(sda_pin, GPO, GPIO_HIGH, GPO_OPEN_DTAIN); // <20><>ȡ<EFBFBD><C8A1>ӦIO<49><4F><EFBFBD><EFBFBD> AF<41><46><EFBFBD>ܱ<EFBFBD><DCB1><EFBFBD>
|
||||
soft_iic_obj->addr = addr;
|
||||
soft_iic_obj->delay = delay;
|
||||
gpio_init(scl_pin, GPO, GPIO_HIGH, GPO_PUSH_PULL); // <20><>ȡ<EFBFBD><C8A1>ӦIO<49><4F><EFBFBD><EFBFBD> AF<41><46><EFBFBD>ܱ<EFBFBD><DCB1><EFBFBD>
|
||||
gpio_init(sda_pin, GPO, GPIO_HIGH, GPO_OPEN_DTAIN); // <20><>ȡ<EFBFBD><C8A1>ӦIO<49><4F><EFBFBD><EFBFBD> AF<41><46><EFBFBD>ܱ<EFBFBD><DCB1><EFBFBD>
|
||||
}
|
||||
void eep_soft_iic_read_8bit_registers(soft_iic_info_struct *soft_iic_obj, const uint8 register_name_h, const uint8 register_name_l, uint8 *data, uint32 len)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
zf_assert(data != NULL);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1);
|
||||
soft_iic_send_data(soft_iic_obj, register_name_h);
|
||||
soft_iic_send_data(soft_iic_obj, register_name_l);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1 | 0x01);
|
||||
while (len--) {
|
||||
*data++ = soft_iic_read_data(soft_iic_obj, len == 0);
|
||||
}
|
||||
soft_iic_stop(soft_iic_obj);
|
||||
}
|
||||
void eep_soft_iic_write_8bit_registers(soft_iic_info_struct *soft_iic_obj, const uint8 register_name_h, const uint8 register_name_l, const uint8 *data, uint32 len)
|
||||
{
|
||||
zf_assert(soft_iic_obj != NULL);
|
||||
zf_assert(data != NULL);
|
||||
soft_iic_start(soft_iic_obj);
|
||||
soft_iic_send_data(soft_iic_obj, soft_iic_obj->addr << 1);
|
||||
soft_iic_send_data(soft_iic_obj, register_name_h);
|
||||
soft_iic_send_data(soft_iic_obj, register_name_l);
|
||||
while (len--) {
|
||||
soft_iic_send_data(soft_iic_obj, *data++);
|
||||
}
|
||||
soft_iic_stop(soft_iic_obj);
|
||||
}
|
||||
Reference in New Issue
Block a user