|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
4 a0 u- s) V0 }' O, Nvoid PSCInit(void)3 }: M) e/ v+ ^ l
{8 b7 F6 J! B9 {5 O2 i, s
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);0 A; z/ C D- ~( [8 x# O- D5 c& y# {
}
* ~& h9 k% H, a- E y, e" x" x# a1 Q2 O* }( O
void GPIOBankPinMuxSet(void)5 d* d: N+ B* T1 s
{
1 |, u+ R( n1 p // DRDY ------------ GPIO6[14] -- 111
: e* w3 { ]# \% {* S9 w) [+ I! A. T // SPI1_CLK ------------ GPIO2[13] -- 46' J# G$ S8 V7 c" W2 p e6 C
// SPI1_SOMI------------ GPIO2[11] -- 44
3 z, p6 e4 S1 N% d7 W: y // SPI1_SIMO------------ GPIO2[10] -- 43
?, p; C/ q. B1 n9 G // SPI1_CS2 ------------ GPIO1[0] -- 17
( ?* N3 l3 T* P7 Y: K3 r& \ // SPI1_CS3 ------------ GPIO1[1] -- 189 I2 S9 ?" ?, L! \( t, C
; H6 y6 z( @* \% i, K' W5 Q: @ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
* e* [9 B7 m8 ~4 v! l6 j3 A5 W: { HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
( x$ w% S4 x* H/ j HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);7 f y- N- U9 ?7 l2 \
8 u" }+ U) R% A1 X8 i //DRDY( h: ^# U! ]( C9 F+ S
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
, D3 c- v G3 q0 u% X# h1 B; Y // CS2,CS39 H. Y, d% ~; u7 ]8 J# H
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
) I1 E' ]7 _; h V# F& Z- S$ m GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
6 ?1 p( c8 w1 ]8 ^) i //SIMO3 D' r# z1 Q$ h1 ~1 [
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
0 R2 _$ t9 w$ J, e! k: N //SOMI
8 z a% _1 e. M7 b$ J- M GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
$ J& i! B4 O5 Q$ @9 L+ c# T; p6 x //CLK5 g) w4 S. F% z3 ?& [- T
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK4 P) L- B% _* c9 f
1 X- ~8 z. F& ~. M# ]3 M // LDAC9 w8 g! @: t1 L, z7 h( Q$ [$ X
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK/ v( G* i% ~1 N
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 T' _( G1 p( g- }+ Z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
k' H7 U5 @% c" K' m! z" k GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS34 @- F* E }' ^5 L3 M5 d/ u
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY+ o5 ?8 H2 d0 h% S/ v1 O5 d/ G! z8 E
}) T% k, Z! _5 e6 e
. ~* A& `! O q; D8 eint main(void)" J' h9 [) k. `, S: N3 s
{
* _/ w1 e5 t# R1 u& [ // 外设使能
. m; p3 ]) ~; s% e( e PSCInit();
4 H# p9 t2 p* h$ B: X4 {3 [& A- D1 E6 K }' S
# C) G- _1 e! A( L5 h& l7 S$ ]
// 管脚复用配置, I5 I& E$ L7 r) G' b
GPIOBankPinMuxSet();9 B! \' A0 H' F) e' ?
for(;;)
n. H$ ^$ Q- n5 Y' c* ] {
/ L7 T& w; d/ G2 @, a3 h/ }6 Z2 B SET_SCLK();//时钟正常输出
/ P; s4 W' t+ `2 d/ c. I GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS21 y0 }3 h- p# |9 w. U3 y+ r+ [/ Y, z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
& c# ^+ l$ _- U7 ^$ f GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
' X- T2 d$ X7 }" [# w: l/ Z8 I4 _+ z u S9 a
delay(20); A9 l* q! f* m7 ^5 Z
CLR_SCLK();0 q2 _. ~- p; B
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
/ v9 e" u, L9 X, l GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
% I* p X- J/ | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' @6 x9 Q5 u) c$ }
delay(20);
0 ?, P4 A: u3 E5 f9 a }
5 b2 O" l& ?" o, T5 n4 V: |}' g' g T) ]' E
|
|