|
|
使用下面的例子代码,不能使SIMO和CS为低电平:, ~+ I) y; k2 e
void PSCInit(void)0 l2 I: S( _# y# H- U3 [; Q$ @
{8 J7 z6 P3 w2 }7 l
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
! }8 y: X0 l4 e) N% ]}9 A6 a: k4 v2 i5 h# e( N9 d
8 o1 c9 Z+ j8 Cvoid GPIOBankPinMuxSet(void)7 B* y5 r1 j& u; h
{- i" ~- _: I |. B
// DRDY ------------ GPIO6[14] -- 111
6 ]. L5 A5 Q% V; f // SPI1_CLK ------------ GPIO2[13] -- 461 O, _9 }$ o0 ?2 t' U/ S
// SPI1_SOMI------------ GPIO2[11] -- 44! k8 p' a4 G. y
// SPI1_SIMO------------ GPIO2[10] -- 43
% |# X; h" w# @6 S+ m' [$ F% ] // SPI1_CS2 ------------ GPIO1[0] -- 17% R: q4 V/ R! T1 o- A8 i, c
// SPI1_CS3 ------------ GPIO1[1] -- 18
) d1 m2 W/ d5 }0 Y( k) w' T7 ~' J1 n+ C* P9 X& m
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
: x8 t( I, A7 {; E4 _- I HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
0 k1 G! L& ?, J. Z" w7 j HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
# W) O @% s2 L& {9 T5 h9 {% \
- s4 R4 L# y- k" v //DRDY. R7 i5 t% T8 B6 V( D2 R9 T: U2 {9 f
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY6 N5 T+ ?7 C3 z3 ^8 u
// CS2,CS32 }1 \) v' d/ n; _
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS29 D% L7 K3 Y; r7 h2 e# Y4 u
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS37 p! h- }6 t( G! s, u' w
//SIMO
" k* `" {6 n' y8 I6 ~* [ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO4 G1 K5 l! x8 z6 [: s
//SOMI7 j' B# O+ i1 V, u. V/ ?; D- A
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
! i; I% k6 Q0 k4 B! S V //CLK
. S! D9 |4 G+ ]8 ?) e/ ?" J6 k GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
. v; z+ k! x- d! }9 L
$ T/ F; o! p, D, \) D3 k // LDAC. ]3 B* {/ S. v1 F6 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK0 `5 S3 W7 m. @3 T W* @
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
( Y. D, f( L9 |; C% ^ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2" a l/ ], _& [; Q* A2 y1 a
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
6 g7 X: e5 w0 f GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY4 W. }4 K) G' w2 `; ]
}3 }9 j3 o) M+ [, M! m5 v, i
- n( r2 J0 x' b0 i1 ` \3 ~: S
int main(void)( D- _! z8 c' t. a2 @, E8 ]0 o
{4 ?0 l0 ^" v2 G2 s
// 外设使能
- V. F; q& X/ V% X: a9 M PSCInit();
% f& j; _8 S M( @; r
' O" z9 X$ c9 t. J0 Q h & P8 o, C3 c% s% P% G* e) A
// 管脚复用配置4 v" v' B1 I1 }) J; L& l
GPIOBankPinMuxSet();
5 d' E/ {0 u9 c7 ~3 u for(;;)4 p! A- f) @* F8 S
{
7 G; o0 \' W6 F* X% c$ J7 S7 r SET_SCLK();//时钟正常输出
3 j. n, }, k# w, Q% P; {0 a GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. s7 w/ B) { g- e' [- k% S( C) E* f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3: E. G3 A. M* P. _* s
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN4 K1 ^" X+ D4 @: ^+ \
' d/ k; l8 \; q0 u) D$ c9 d
delay(20);' b' z! b8 X* X$ d$ ^4 A% [1 f
CLR_SCLK();
) _& h2 w! v( D% J7 ~ Q; D GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
2 z9 v, h, ]" H. n d- k GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
8 k. L( G' c4 W GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
5 S3 j- q: @+ R9 @7 n( C delay(20);
+ j# Z; A0 z* g( T X+ M" _ }
8 M0 @* l3 y9 |6 L2 ?}2 O5 q& x3 H7 I
|
|