|
|
使用下面的例子代码,不能使SIMO和CS为低电平:2 r5 S, \8 v) y' ?! T3 s9 \+ e, i
void PSCInit(void)9 s. M) |* ^2 p) D, X
{* q2 c0 }" {- k' \; R$ u
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);3 y* D& h( i0 n* y+ R: x7 E$ z
}
, J# G" Q* s' Q% Q% v
2 W" {. d' O ?& t( e. L% C( E- tvoid GPIOBankPinMuxSet(void)
9 |/ ], a% @7 I9 s5 k' Q{+ ?# U3 p& }9 L; n/ J) g j" V
// DRDY ------------ GPIO6[14] -- 111
4 Y( i l, d" R/ |1 q // SPI1_CLK ------------ GPIO2[13] -- 46
( J! k6 j0 L( t; E/ S // SPI1_SOMI------------ GPIO2[11] -- 44
! i9 Q3 w. z( E // SPI1_SIMO------------ GPIO2[10] -- 43/ M3 K, R% Z5 G1 U4 l
// SPI1_CS2 ------------ GPIO1[0] -- 17+ t$ H% B U1 F8 l* I8 V
// SPI1_CS3 ------------ GPIO1[1] -- 18
# d9 r' {$ Z: e# P( |+ Y
( [4 _0 b. q' ? HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);; g: y/ n: Z3 S5 K( ~( V4 f
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);0 @9 l r' e- ? B4 C
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
7 x) r; a. l; t3 [8 r' M! o& G& p, ], C' ] ^0 t* N
//DRDY# g! n2 k5 A+ @$ i7 j
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY$ ~7 `) W& ?. G( g
// CS2,CS30 J3 K; w3 y& O' K$ i
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2$ k- q" b2 z( ?
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
) t" g3 X# i, n t$ H9 ~ A //SIMO1 }$ F1 M. [0 f' V( v9 J; `# R7 w
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO7 N8 V0 R+ r( D! l' g; Q7 m/ K w
//SOMI7 ~/ G: A' |& C8 ^
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI7 M" H2 \0 U3 q, M
//CLK
( [6 h- u7 e2 m l+ j GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK" ~% m$ y" y4 ~
" i$ H: j6 W% S0 V; c# V/ l
// LDAC
, P2 ]- ?( E- s8 L GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. B R& J2 m3 Y% P3 X2 \: z; z$ t4 d
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& w' r7 U8 N3 l2 |7 Y3 W- x2 J: a GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2* W# g/ \" k/ O$ j q; X5 B
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3; k0 \) I2 t4 T/ ^% @
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY h5 x3 u i+ p7 M5 A0 t# X0 F
}: a T, r* }/ B' u# t6 h! m
! W7 b& X( O+ b! ?1 z
int main(void)! {0 P6 M7 P. q& w5 {
{
( ~. h2 t- k' h! Y* { // 外设使能
6 E" w9 c( ~* v# O PSCInit();4 n5 W/ i' E. D1 @0 s- u6 s! o$ i
- h1 d% N- y% W) f& @0 t- e
0 C' v3 E- N: g+ S; A. o( f U$ ]4 X
// 管脚复用配置9 }& |! b: D# S t& d' W& K" L6 a
GPIOBankPinMuxSet();
7 j: C6 l( w% s5 m* | for(;;)1 I4 a% ?# H. k, S5 R% c( b
{
8 x) b0 R, n3 P1 O' r0 N+ H$ u3 B SET_SCLK();//时钟正常输出% _5 [# @6 v8 t" M0 O- M! j
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS25 w1 ?* E: W) n1 ]( u! h
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS36 j$ \$ T; M( c
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
0 O3 A/ Z5 A- K; u1 a" b$ P" L {3 e: a
delay(20);/ X, M J( x7 c/ K9 p
CLR_SCLK();: ?9 P4 }% Z% D3 q; X( Y' D2 g
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
( j2 X9 `2 {9 Z; P0 ~, z( @ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
. k) Z) A0 X# N GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! _- N. P3 e0 m9 w+ W; o: R delay(20);. P! O' u4 \8 @: M8 q) E9 @
}
- J3 J7 E8 }7 i/ Q) t}/ T' m; i5 [ H- R* k
|
|