Preheat oven to 350°. Make topping: Whisk sugar, flour, cinnamon, cardamom, and salt in a medium bowl. Add butter and rub in with your fingers until mixture comes together in large clumps. Stir in pistachios and set aside.
Butter an 8-in. square pan. Line with baking parchment, leaving a 2-in. overhang on two sides. Line remaining two sides with parchment strips. Butter parchment.
Make batter: Sift (or stir) together flour, baking powder, and salt into a small bowl. In a large bowl with a mixer, beat sugar and 1/4 cup butter on high speed until well blended, about 3 minutes. Add egg and vanilla and beat on high speed just to combine, 30 to 60 seconds. Reduce speed to low and alternately add one-third of dry ingredients, then half of milk until all are used, blending after each addition until just combined.
Reserve 1 cup raspberries. Spread half of batter in prepared pan and sprinkle with 2 cups berries. Spoon and gently spread remaining batter over berries. Sprinkle with 1/2 cup reserved berries, then with half of topping; repeat to use remaining berries and topping.
Bake buckle until golden brown and a toothpick inserted into center (not in a berry) comes out clean, 60 to 70 minutes; drape with foil if topping is browned before center is done.
Cool in pan on a rack 20 minutes. Lift buckle from pan using the long pieces of parchment. Let buckle cool completely (about 1 1/2 more hours) on parchment on rack. To serve, ease from parchment onto a platter.