|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
; a; o$ `3 o7 t7 m. n" r6 X: gvoid PSCInit(void); G5 C/ ?& ^1 Y( p4 k
{
+ P7 I) [# A+ l, f# ? PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
5 i5 H3 b: @$ Q0 j: ^}
) {* k* F+ S% k- T5 a) R& K$ j( c' i# Q t, ^# T: |( U5 |+ s: A* E& Y
void GPIOBankPinMuxSet(void)
2 H8 ?( l3 ^2 R{
: q @# Z+ s% } // DRDY ------------ GPIO6[14] -- 1118 Y* e; I; ?0 P2 O5 ~. D9 q, ~+ [
// SPI1_CLK ------------ GPIO2[13] -- 46: Q; h# \; c: q
// SPI1_SOMI------------ GPIO2[11] -- 44
5 D' A0 ]3 ^, ]2 _$ x8 ~: M // SPI1_SIMO------------ GPIO2[10] -- 43/ T# l' @2 f! H% Z" ~' u
// SPI1_CS2 ------------ GPIO1[0] -- 170 L5 p5 b: [2 b0 U7 S
// SPI1_CS3 ------------ GPIO1[1] -- 18
. N7 K' c" T* u4 Y& [$ `9 S( @& Q$ g H. O$ ^+ {
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
' H* C n% b' X' a/ `$ C# I+ ~ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
- b1 H: v8 y+ O3 V HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);" @$ x F, N7 ?: ?) B
?7 z h/ b3 x+ R% k4 G( Z
//DRDY$ `; \0 c; T9 v# _$ V8 m3 @
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
' n4 _! R1 D4 X4 r* J2 M // CS2,CS3. y1 S7 C& V: {+ l! r$ z7 R
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS27 H" s% L5 c C/ V" d2 o9 K
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
' z4 r. K+ o0 Q* s' S //SIMO
6 v. f) f1 [) m- E$ g% r GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
2 ]. D$ a( t" p7 d" p" Y3 H/ _' H //SOMI
, d t" Y; E( Q |$ V' t X GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
6 q& ^5 U. u h; `; ?0 t //CLK
5 {1 l& w0 n, b4 k GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
l& D, W$ Z$ Q
3 \* C: y: { X4 {& d // LDAC
) R8 R3 S& a: ~! o( w* O2 X( \ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
1 p0 \+ C7 \! ]; C! h1 G% @0 j9 k GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN" ]+ P. `+ A5 U7 Q! e8 R. Y) F
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 k- k* d9 v1 X! L GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
$ i1 P7 a* z+ B GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
1 B+ j4 u7 j. E; h/ D7 s* _}0 {" _7 P% `, R" W$ m) Z& V" I
3 {4 Z# T5 Y$ q+ q$ S: R( ^" J$ T/ E, W
int main(void)
. @: @- W6 v5 N{
a3 ]% j$ ]4 N$ n- N // 外设使能+ f& j6 ^$ {9 d
PSCInit();& j$ s7 p3 | h7 G
) Q. q2 _& L( q6 X
! h$ |: g* l* j' G( y+ q6 H // 管脚复用配置
) Y# s9 Y, K+ f/ q) j! _' Z GPIOBankPinMuxSet();
5 n* S, R" y( @7 Z8 z for(;;)' h2 B# d% K: [" |+ [
{5 }; y- a) ^; ^1 Q, n- Q
SET_SCLK();//时钟正常输出 s; y' Z1 v5 X' }" t& c
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& S l6 j+ P$ p& q s- ]& N) f* ?+ [ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
% ^2 ~1 K+ p- h# I' l# p GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
( e( \: W- \- `2 F: o/ p5 s* C3 k" M9 A+ f- I: |
delay(20);
6 @: N e) e- j6 K3 Z. M+ `1 `( ^ CLR_SCLK();8 P* Q9 R. M$ @
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
4 x" J/ o& X& F9 a* N: } GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
t8 R8 h9 P3 o+ W2 ]* r! E GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN: U- z. J8 e6 p; N3 ]
delay(20);8 u' l: z* ?" t8 W
}
( ~. R g5 e6 I' ?3 \}6 A$ b1 H, f1 e f" I8 G" Q
|
|