|
|
使用下面的例子代码,不能使SIMO和CS为低电平:" z0 e- W- b/ G8 N% o
void PSCInit(void)/ c/ }& a3 }: Z( X4 K3 O0 `% ^7 H
{
2 n% c {1 x3 u3 u, l) N PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);. ]3 C# r+ I8 S t h' j6 s2 |) t. i
}
4 N- ?( S" o( r6 c3 V* s6 c0 i% i; o& L# A; V% [2 `6 J
void GPIOBankPinMuxSet(void)
, a% W5 N+ X4 R) [# a. q7 R{
5 H2 k; E. A9 E7 |* V4 f // DRDY ------------ GPIO6[14] -- 111
: f8 A. |9 L8 v2 @% _ // SPI1_CLK ------------ GPIO2[13] -- 46
+ g& q) t _4 k/ Q0 r& M; X // SPI1_SOMI------------ GPIO2[11] -- 449 F9 \) O. z* e8 }
// SPI1_SIMO------------ GPIO2[10] -- 43. Q7 H0 g$ S l
// SPI1_CS2 ------------ GPIO1[0] -- 17
% s6 a# `& x/ e- S' M( M' B4 _9 u& Y // SPI1_CS3 ------------ GPIO1[1] -- 18/ R( G% r o; R$ P9 Z+ S+ L+ P! J K
8 b& v( d7 r1 m* t/ s HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);3 l+ a7 \% J5 M/ h. [$ d$ C
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);3 @9 i5 L# W4 r( y" \* @
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);3 a$ w* g" E, i& o
5 |; ~8 W8 Q( `- D/ B
//DRDY
N* p4 O5 C. J! w- x7 S GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
. h0 c+ l% q5 E // CS2,CS3
) z) a2 J7 o3 |) Q* M1 _( w GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2) G: r+ i, n4 T) k2 h
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3( O; o! |! Q) S# t+ h% u. C
//SIMO$ F9 G# o0 |% Q' y" V. T
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO+ p0 k7 d& t/ ?7 V: c6 \
//SOMI
/ @' h+ P: A5 e. t/ t9 x" o GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI$ ]" M4 v! [& D* G% G
//CLK4 i+ X ?6 ^: E3 f
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
% Y7 `+ g: r/ ^( i/ J1 o. L# D- S. y8 k
// LDAC
: C/ G' [1 C% ^& L GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. \) L8 ^& \4 U( K& P
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
8 x; N. Y$ m6 v* H: \0 A/ a9 Y, G GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' E0 ?, M2 w- @2 T& A# o) L
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
6 b/ ]6 `9 Y' g# ?) U GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
4 _$ L1 H, I( V# m+ [3 H9 f. m3 u0 G} z4 g, t8 D* a. R# z0 u
/ ?, V: n6 i0 |8 I% v( Q
int main(void)
5 r; Q" F" B; p; L{
, u+ Z# B1 o" V, P- M0 n // 外设使能
6 z! u5 G( a2 w2 v" l PSCInit();
4 R) ?& y6 N0 n7 l) r+ i1 t* t. W
# w/ e' M3 p5 c- d, q1 D ! h1 u5 q" O% F1 ?2 ^* G7 m1 {
// 管脚复用配置
" N0 W; v, y4 n GPIOBankPinMuxSet();% |' ^6 v1 s6 V, V' U! v' p+ a
for(;;)
) D* X- w$ j1 B4 \ {
. }+ _3 c d0 y) ^- _- r N! T! ^ SET_SCLK();//时钟正常输出
5 {" P7 U2 S; y6 E- m GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- n& S; f) V8 P* w# F, E6 T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3/ I3 z) d8 T* p3 i
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
/ q! A) y: r3 E i- F7 ^7 k- E: Y1 d( o
delay(20);# ^* f9 Q' l3 `+ g0 [
CLR_SCLK();
; g/ P$ d# a4 \# a" C GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
6 d4 Q/ M( q5 w. q: f; b GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3% D* \- v% d& T, w0 k4 q5 r' y8 s% I
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' o5 N J. u( F3 W
delay(20);- X/ ]2 p: C0 N! d0 `
}( ~# K9 o7 R9 @! N- I0 u8 [6 y
}1 L! @0 a2 t; d! T7 j q8 b
|
|